crespo09 发表于 2018-11-3 14:22:31

Redis(二)相关命令

  (一)简介
  Redis 命令用于在 redis 服务上执行操作。
  要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前下载的的 redis 的安装包中。Redis 客户端的基本语法为:redis-cli
# /usr/local/redis-3.2.9/src/redis-cli  
127.0.0.1:6379> ping
  
PONG
  
127.0.0.1:6379>
  远程登录为:
# /usr/local/redis-3.2.9/src/redis-cli -h 127.0.0.1 -p 6379 -a "redis123456"  
127.0.0.1:6379> ping
  
PONG
  
127.0.0.1:6379>
  (二)命令的详解
  (1)Redis键(key)。redis键命令用于管理redis的键
  语法:127.0.0.1:6379>COMMANDKEY_NAME
  实例如下:
127.0.0.1:6379> set foo redis  
OK
  
127.0.0.1:6379> get foo
  
"redis"
  
127.0.0.1:6379> del foo
  
(integer) 1
  
127.0.0.1:6379> get foo
  
(nil)
  在上边的实例中set 是一个命令,foo是一个键,get foo是获取这个键,del foo是删除这个键,如果删除成功后会输出 (integer) 1,否则将输出 (integer) 0
  下表给出了与redis键相关的基本命令:
编号命令描述1DEL key此命令删除一个指定键(如果存在)。2DUMP key此命令返回存储在指定键的值的序列化版本。3EXISTS key此命令检查键是否存在。4EXPIRE key seconds设置键在指定时间秒数之后到期/过期。5EXPIREAT key timestamp设置在指定时间戳之后键到期/过期。这里的时间是Unix时间戳格式。6PEXPIRE key milliseconds设置键的到期时间(以毫秒为单位)。7PEXPIREAT key milliseconds-timestamp以Unix时间戳形式来设置键的到期时间(以毫秒为单位)。8KEYS pattern查找与指定模式匹配的所有键。9MOVE key db将键移动到另一个数据库。10PERSIST key删除指定键的过期时间,得永生。11PTTL key获取键的剩余到期时间。12RANDOMKEY从Redis返回一个随机的键。13RENAME key newkey更改键的名称。14PTTL key获取键到期的剩余时间(以毫秒为单位)。15RENAMENX key newkey如果新键不存在,重命名键。16TYPE key返回存储在键中的值的数据类型。  (2)redis字符串(string)。redis字符串数据类型的相关命令是用于管理redis字符串值。语法:
redis 127.0.0.1:6379> COMMAND KEY_NAME  实例:
127.0.0.1:6379> set country china  
OK
  
127.0.0.1:6379> get country
  
"china"
  在上边的例子中,set和get是redis中的命令,而country是键的名称。下表列出了redis中管理字符串的基本命令:
编号命令描述说明1SET key value此命令设置指定键的值。2GET key获取指定键的值。3GETRANGE key start end获取存储在键上的字符串的子字符串。4GETSET key value设置键的字符串值并返回其旧值。5GETBIT key offset返回在键处存储的字符串值中偏移处的位值。6MGET key1 获取所有给定键的值7SETBIT key offset value存储在键上的字符串值中设置或清除偏移处的位8SETEX key seconds value使用键和到期时间来设置值9SETNX key value设置键的值,仅当键不存在时10SETRANGE key offset value在指定偏移处开始的键处覆盖字符串的一部分11STRLEN key获取存储在键中的值的长度12MSET key value 为多个键分别设置它们的值13MSETNX key value 为多个键分别设置它们的值,仅当键不存在时14PSETEX key milliseconds value设置键的值和到期时间(以毫秒为单位)15INCR key将键的整数值增加116INCRBY key increment将键的整数值按给定的数值增加17INCRBYFLOAT key increment将键的浮点值按给定的数值增加18DECR key将键的整数值减119DECRBY key decrement按给定数值减少键的整数值20APPEND key value将指定值附加到键  (3)Redis 哈希(Hash)。Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
127.0.0.1:6379> HMSET myhash id "1" name "arvin" sex "man" address "china"  
OK
  
127.0.0.1:6379> hgetall myhash
  
1) "id"
  
2) "1"
  
3) "name"
  
4) "arvin"
  
5) "sex"
  
6) "man"
  
7) "address"
  
8) "china"
  
127.0.0.1:6379> hkeys myhash
  
1) "id"
  
2) "name"
  
3) "sex"
  
4) "address"
  
127.0.0.1:6379> hvals myhash
  
1) "1"
  
2) "arvin"
  
3) "man"
  
4) "china"
  在上面的例子中设置了redis的一些描述信息(id,name sex address)到哈希表myhash中。
序号命令说明1HDEL key field2 删除一个或多个哈希字段。2HEXISTS key field判断是否存在散列字段。3HGET key field获取存储在指定键的哈希字段的值。4HGETALL key获取存储在指定键的哈希中的所有字段和值5HINCRBY key field increment将哈希字段的整数值按给定数字增加6HINCRBYFLOAT key field increment将哈希字段的浮点值按给定数值增加7HKEYS key获取哈希中的所有字段8HLEN key获取散列中的字段数量9HMGET key field1 获取所有给定哈希字段的值10HMSET key field1 value1 为多个哈希字段分别设置它们的值11HSET key field value设置散列字段的字符串值12HSETNX key field value仅当字段不存在时,才设置散列字段的值13HVALS key获取哈希中的所有值  (4)redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
127.0.0.1:6379> LPUSH database mysql  
(integer) 1
  
127.0.0.1:6379> LPUSH database oracle
  
(integer) 2
  
127.0.0.1:6379> LPUSH database sql server
  
(integer) 4
  
127.0.0.1:6379> LPUSH database db2
  
(integer) 5
  
127.0.0.1:6379> lrange database 0 4
  
1) "db2"
  
2) "server"
  
3) "sql"
  
4) "oracle"
  
5) "mysql"
  已上列子通过LPUSH将四个值插入到名称为database的redis列表中。列表常用的基本命令:
序号命令说明1BLPOP key1 timeout删除并获取列表中的第一个元素,或阻塞,直到有一个元素可用2BRPOP key1 timeout删除并获取列表中的最后一个元素,或阻塞,直到有一个元素可用3BRPOPLPUSH source destination timeout从列表中弹出值,将其推送到另一个列表并返回它; 或阻塞,直到一个可用4LINDEX key index通过其索引从列表获取元素5LINSERT key BEFORE/AFTER pivot value在列表中的另一个元素之前或之后插入元素6LLEN key获取列表的长度7LPOP key删除并获取列表中的第一个元素8LPUSH key value1 将一个或多个值添加到列表9LPUSHX key value仅当列表存在时,才向列表添加值10LRANGE key start stop从列表中获取一系列元素11LREM key count value从列表中删除元素12LSET key index value通过索引在列表中设置元素的值13LTRIM key start stop修剪列表的指定范围14RPOP key删除并获取列表中的最后一个元素15RPOPLPUSH source destination删除列表中的最后一个元素,将其附加到另一个列表并返回16RPUSH key value1 将一个或多个值附加到列表17RPUSHX key value仅当列表存在时才将值附加到列表  (5)Redis集合set。Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
127.0.0.1:6379> SADD myset "redis"  
(integer) 1
  
127.0.0.1:6379> SADD myset "mysql"
  
(integer) 1
  
127.0.0.1:6379> SADD myset "mongodb"
  
(integer) 1
  
127.0.0.1:6379> SADD myset "mysql"
  
(integer) 0
  
127.0.0.1:6379> SMEMBERS MYSET
  
(empty list or set)
  
127.0.0.1:6379> SMEMBERS myset
  
1) "mongodb"
  
2) "mysql"
  
3) "redis"
  以上示例通过sadd将三个值插入到myset的redis集合中。
序号命令说明1SADD key member1 将一个或多个成员添加到集合2SCARD key获取集合中的成员数3SDIFF key1 减去多个集合4SDIFFSTORE destination key1 减去多个集并将结果集存储在键中5SINTER key1 相交多个集合6SINTERSTORE destination key1 交叉多个集合并将结果集存储在键中7SISMEMBER key member判断确定给定值是否是集合的成员8SMOVE source destination member将成员从一个集合移动到另一个集合9SPOP key从集合中删除并返回随机成员10SRANDMEMBER key 从集合中获取一个或多个随机成员11SREM key member1 从集合中删除一个或多个成员12SUNION key1 添加多个集合13SUNIONSTORE destination key1 添加多个集并将结果集存储在键中14SSCAN key cursor 递增地迭代集合中的元素  (6)Redis有序集合(sorted set)和集合一样也是string字符型元素的集合,且不允许有重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
127.0.0.1:6379> zadd mysorted 1 redis  
(integer) 1
  
127.0.0.1:6379> zadd mysorted 3 mongodb
  
(integer) 1
  
127.0.0.1:6379> zadd mysorted 2 mysql
  
(integer) 1
  
127.0.0.1:6379> zadd mysorted 4 mysql
  
(integer) 0
  
127.0.0.1:6379> zadd mysorted 6 mysql
  
(integer) 0
  
127.0.0.1:6379> zrange mysorted 0 10
  
1) "redis"
  
2) "mongodb"
  
3) "mysql"
  
127.0.0.1:6379> zrange mysorted 0 10 withscores
  
1) "redis"
  
2) "1"
  
3) "mongodb"
  
4) "3"
  
5) "mysql"
  
6) "6"
  (7)Redis HyperLogLog是用来做基数统计的算法,以少量内存提供集合中唯一元素数量的近似值。HyperLogLog 可以接受多个元素作为输入,并给出输入元素的基数估算值:

[*]  基数:集合中不同元素的数量。比如 {‘apple’, ‘banana’, ‘cherry’, ‘banana’, ‘apple’} 的基数就是 3 。
[*]  估算值:算法给出的基数并不是精确的,可能会比实际稍微多一些或者稍微少一些,但会控制在合理的范围之内。
  HyperLogLog 的优点是,即使输入元素的数量或者体积非常非常大,计算基数所需的空间总是固定的、并且是很小的。
  在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
  但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以
  HyperLogLog 不能像集合那样,返回输入的各个元素。
127.0.0.1:6379> pfadd qaz "redis"  
(integer) 1
  
127.0.0.1:6379> pfadd qaz "mysql"
  
(integer) 1
  
127.0.0.1:6379> pfadd qaz "mongodb"
  
(integer) 1
  
127.0.0.1:6379> pfcount qaz
  
(integer) 3
序号命令说明1PFADD key element 将指定的元素添加到指定的HyperLogLog 中。2PFCOUNT key 返回给定 HyperLogLog 的基数估算值。3PFMERGE destkey sourcekey 将多个 HyperLogLog 合并为一个 HyperLogLog  (8)redis发布订阅。
  Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
  Redis 发布订阅(pub/sub)实现了消息系统,发送者(在redis术语中称为发布者)在接收者(订阅者)接收消息时发送消息。传送消息的链路称为信道。
  在Redis中,客户端可以订阅任意数量的信道
  首先在一个客户端输入subscribe redischat,等待另一个客户端输入,显示如下:
127.0.0.1:6379> subscribe redischat  
Reading messages... (press Ctrl-C to quit)
  
1) "subscribe"
  
2) "redischat"
  
3) (integer) 1
  
1) "message"
  
2) "redischat"
  
3) "hello everyont"
  
1) "message"
  
2) "redischat"
  
3) "redis is very great caching technique"
  重新开个客户端输入如下:
127.0.0.1:6379> publish redischat "hello everyont"  
(integer) 1
  
127.0.0.1:6379> publish redischat "redis is very great caching technique"
  
(integer) 1
  
127.0.0.1:6379> publish redischat "learn redis by lqb"
  
(integer) 1
  
127.0.0.1:6379> publish redischat "learn redis by lqb"
  
(integer) 1
  下表列出了与Redis发布订阅相关的一些基本命令。
序号命令说明1PSUBSCRIBE pattern 订阅一个或多个符合给定模式的频道。2PUBSUB subcommand ]查看订阅与发布系统状态。3PUBLISH channel message将信息发送到指定的频道。4PUNSUBSCRIBE ]退订所有给定模式的频道。5SUBSCRIBE channel 订阅给定的一个或多个频道的信息。6UNSUBSCRIBE ]退订给定的频道。  (9)Redis事物。Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:

[*]  事务中的所有命令作为单个隔离操作并按顺序执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
[*]  Redis事务也是原子的。原子意味着要么处理所有命令,要么都不处理。
  一个事务从开始到执行会经历以下三个阶段:

[*]  开始事务。
[*]  命令入队。
[*]  执行事务。
  实例:Redis事务由命令MULTI命令启动,然后需要传递一个应该在事务中执行的命令列表,然后整个事务由EXEC命令执行。
127.0.0.1:6379> multi  
OK
  
127.0.0.1:6379> set foo "this is test page"
  
QUEUED
  
127.0.0.1:6379> get book-name
  
QUEUED
  
127.0.0.1:6379> sadd tag "c++ is very good programming"
  
QUEUED
  
127.0.0.1:6379> smembers tag
  
QUEUED
  
127.0.0.1:6379> exec
  
1) OK
  
2) (nil)
  
3) (integer) 1
  
4) 1) "c++ is very good programming"
  
127.0.0.1:6379> multi
  
OK
  
127.0.0.1:6379> set mykey "redis"
  
QUEUED
  
127.0.0.1:6379> get mykey
  
QUEUED
  
127.0.0.1:6379> incr visitors
  
QUEUED
  
127.0.0.1:6379> exec
  
1) OK
  
2) "redis"
  
3) (integer) 1
  与redis相关的基本命令:
序号命令说明1DISCARD丢弃在MULTI之后发出的所有命令2EXEC执行MULTI后发出的所有命令3MULTI标记事务块的开始4UNWATCH取消 WATCH 命令对所有 key 的监视。5WATCH key 监视给定的键以确定MULTI / EXEC块的执行  (10)redis脚本。Redis脚本使用 Lua 解释器来执行脚本。 Reids 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL
127.0.0.1:6379> EVAL "return {KEYS,KEYS,ARGV,ARGV}" 2 key1 key2 first second  
1) "key1"
  
2) "key2"
  
3) "first"
  
4) "second"
  下表列出了与Redis脚本相关的一些基本命令。
序号命令说明1EVAL script numkeys key arg 执行一个Lua脚本。2EVALSHA sha1 numkeys key arg 执行一个Lua脚本。3SCRIPT EXISTS script 检查脚本缓存中是否存在脚本。4SCRIPT FLUSH从脚本缓存中删除所有脚本。5SCRIPT KILL杀死当前正在执行的脚本。6SCRIPT LOAD script将指定的Lua脚本加载到脚本缓存中。  (11)Redis连接。Redis中的连接命令基本上是用于管理与Redis服务器的客户端连接。
redis 127.0.0.1:6379> AUTH "password"  
OK
  
redis 127.0.0.1:6379> PING
  
PONG
  下表列出了与Redis连接相关的一些基本命令。
序号命令说明1AUTH password使用给定的密码验证服务器2ECHO message打印给定的字符串信息3PING检查服务器是否正在运行4QUIT关闭当前连接5SELECT index更改当前连接的所选数据库  (12)Redis 服务器,Redis 服务器命令主要是用于管理 redis 服务
127.0.0.1:6379> info  
# Server
  
redis_version:3.2.9
  
redis_git_sha1:00000000
  
redis_git_dirty:0
  
redis_build_id:2f58f346024ca4bb
  
redis_mode:standalone
  
os:Linux 3.10.0-327.el7.x86_64 x86_64
  
arch_bits:64
  
multiplexing_api:epoll
  
gcc_version:4.8.5
  
process_id:2329
  
run_id:bf5c0b97691ac975438fb6a954b13ed9a9d564ba
  
tcp_port:6379
  
uptime_in_seconds:97760
  
uptime_in_days:1
  
hz:10
  
lru_clock:4162916
  
executable:/usr/local/redis-3.2.9/src/redis-server
  
config_file:
  
# Clients
  
connected_clients:2
  
client_longest_output_list:0
  
client_biggest_input_buf:0
  
blocked_clients:0
  
# Memory
  
used_memory:913168
  
used_memory_human:891.77K
  
used_memory_rss:2727936
  
used_memory_rss_human:2.60M
  
used_memory_peak:913168
  
used_memory_peak_human:891.77K
  
total_system_memory:3968024576
  
total_system_memory_human:3.70G
  
used_memory_lua:40960
  
used_memory_lua_human:40.00K
  
maxmemory:0
  
maxmemory_human:0B
  
maxmemory_policy:noeviction
  
mem_fragmentation_ratio:2.99
  
mem_allocator:libc
  
# Persistence
  
loading:0
  
rdb_changes_since_last_save:0
  
rdb_bgsave_in_progress:0
  
rdb_last_save_time:1497328628
  
rdb_last_bgsave_status:ok
  
rdb_last_bgsave_time_sec:0
  
rdb_current_bgsave_time_sec:-1
  
aof_enabled:0
  
aof_rewrite_in_progress:0
  
aof_rewrite_scheduled:0
  
aof_last_rewrite_time_sec:-1
  
aof_current_rewrite_time_sec:-1
  
aof_last_bgrewrite_status:ok
  
aof_last_write_status:ok
  
# Stats
  
total_connections_received:6
  
total_commands_processed:180
  
instantaneous_ops_per_sec:0
  
total_net_input_bytes:7123
  
total_net_output_bytes:35960048
  
instantaneous_input_kbps:0.00
  
instantaneous_output_kbps:0.00
  
rejected_connections:171
  
sync_full:0
  
sync_partial_ok:0
  
sync_partial_err:0
  
expired_keys:0
  
evicted_keys:0
  
keyspace_hits:70
  
keyspace_misses:13
  
pubsub_channels:1
  
pubsub_patterns:0
  
latest_fork_usec:113
  
migrate_cached_sockets:0
  
# Replication
  
role:master
  
connected_slaves:0
  
master_repl_offset:0
  
repl_backlog_active:0
  
repl_backlog_size:1048576
  
repl_backlog_first_byte_offset:0
  
repl_backlog_histlen:0
  
# CPU
  
used_cpu_sys:33.59
  
used_cpu_user:14.42
  
used_cpu_sys_children:0.01
  
used_cpu_user_children:0.00
  
# Cluster
  
cluster_enabled:0
  
# Keyspace
  
db0:keys=20,expires=0,avg_ttl=0
  下表列出了与Redis服务器相关的一些基本命令。
序号命令说明1BGREWRITEAOF异步重写仅追加的文件2BGSAVE将数据集异步保存到磁盘3CLIENT KILL 杀死或断开指定的客户端的连接4CLIENT LIST获取到服务器的客户端连接列表5CLIENT GETNAME获取当前连接的名称6CLIENT PAUSE timeout在指定时间内停止处理来自客户端的命令7CLIENT SETNAME connection-name设置当前连接名称8CLUSTER SLOTS获取群集插槽到节点映射的数组9COMMAND获取Redis命令详细信息的数组10COMMAND COUNT获取Redis命令的总数11COMMAND GETKEYS提取键给出一个完整的Redis的命令12BGSAVE将数据集异步保存到磁盘13COMMAND INFO command-name 获取特定Redis命令详细信息的数组14CONFIG GET parameter获取配置参数的值15CONFIG REWRITE使用内存中配置来重写配置文件16CONFIG SET parameter value将配置参数设置为给定值17CONFIG RESETSTAT重置由INFO返回的统计信息18DBSIZE返回所选数据库中的键数量19DEBUG OBJECT key获取有关键的调试信息20DEBUG SEGFAULT使服务器崩溃21FLUSHALL从所有数据库中删除所有键22FLUSHDB删除当前数据库中的所有键23INFO 获取有关服务器的信息和统计信息24LASTSAVE获取上次成功保存到磁盘的UNIX时间戳25MONITOR监听服务器实时接收的所有请求26ROLE返回实例在复制上下文中的角色27SAVE将数据集同步保存到磁盘28SHUTDOWN 将数据集同步保存到磁盘,然后关闭服务器29SLAVEOF host port使服务器成为另一个实例的从属,或将其提升作为主服务器30SLOWLOG subcommand 管理Redis慢查询日志31SYNC用于复制的命令32TIME返回当前服务器的时间

页: [1]
查看完整版本: Redis(二)相关命令