说明
官网命令:http://www.redis.cn/commands/config-get.html
Redis_入门学习:https://www.cnblogs.com/chunxiaozhang/p/12718672.html
Redis_配置文件:https://www.cnblogs.com/chunxiaozhang/p/12718647.html
Redis_数据使用:https://www.cnblogs.com/chunxiaozhang/p/12718618.html
命令列表
Redis命令十分丰富,包括的命令组有Cluster、Connection、Geo、Hashes、HyperLogLog、Keys、Lists、Pub/Sub、Scripting、Server、Sets、Sorted Sets、Streams、Strings、Transactions一共15个redis命令组两百多个redis命令,以下包含Redis所有命令。
###cluster### cluster addslots slot [slot ...] assign new hash slots to receiving node cluster count-failure-reports node-id return the number of failure reports active for a given node cluster countkeysinslot slot return the number of local keys in the specified hash slot cluster delslots slot [slot ...] set hash slots as unbound in receiving node cluster failover [force|takeover] forces a slave to perform a manual failover of its master. cluster forget node-id remove a node from the nodes table cluster getkeysinslot slot count return local key names in the specified hash slot cluster info provides info about redis cluster node state cluster keyslot key returns the hash slot of the specified key cluster meet ip port force a node cluster to handshake with another node cluster nodes get cluster config for the node cluster replicas node-id list replica nodes of the specified master node cluster replicate node-id reconfigure a node as a slave of the specified master node cluster reset [hard|soft] reset a redis cluster node cluster saveconfig forces the node to save cluster state on disk cluster set-config-epoch config-epoch set the configuration epoch in a new node cluster setslot slot importing|migrating|stable|node [node-id] bind an hash slot to a specific node cluster slaves node-id list slave nodes of the specified master node cluster slots get array of cluster slot to node mappings readonly enables read queries for a connection to a cluster slave node readwrite disables read queries for a connection to a cluster slave node ###Connection### auth password 验证服务器命令 echo message 回显输入的字符串 ping ping 服务器 quit 关闭连接,退出 select index 选择新数据库 swapdb index index swaps two redis databases ###Geo### geoadd key longitude latitude member [longitude latitude member ...] 添加一个或多个地理空间位置到sorted set geohash key member [member ...] 返回一个标准的地理空间的geohash字符串 geopos key member [member ...] 返回地理空间的经纬度 geodist key member1 member2 [unit] 返回两个地理空间之间的距离 georadius key longitude latitude radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count] 查询指定半径内所有的地理空间元素的集合。 georadiusbymember key member radius m|km|ft|mi [withcoord] [withdist] [withhash] [count count] 查询指定半径内匹配到的最大距离的一个地理空间元素。 ###Hashes### hdel key field [field ...] 删除一个或多个hash的field hexists key field 判断field是否存在于hash中 hget key field 获取hash中field的值 hgetall key 从hash中读取全部的域和值 hincrby key field increment 将hash中指定域的值增加给定的数字 hincrbyfloat key field increment 将hash中指定域的值增加给定的浮点数 hkeys key 获取hash的所有字段 hlen key 获取hash里所有字段的数量 hmget key field [field ...] 获取hash里面指定字段的值 hmset key field value [field value ...] 设置hash字段值 hset key field value 设置hash里面一个字段的值 hsetnx key field value 设置hash的一个字段,只有当这个字段不存在时有效 hstrlen key field 获取hash里面指定field的长度 hvals key 获得hash的所有值 hscan key cursor [match pattern] [count count] 迭代hash里面的元素 ###HyperLogLog### pfadd key element [element ...] 将指定元素添加到hyperloglog pfcount key [key ...] return the approximated cardinality of the set(s) observed by the hyperloglog at key(s). pfmerge destkey sourcekey [sourcekey ...] merge n different hyperloglogs into a single one. ###Keys### del key [key ...] 删除指定的key(一个或多个) dump key 导出key的值 exists key [key ...] 查询一个key是否存在 expire key seconds 设置一个key的过期的秒数 expireat key timestamp 设置一个unix时间戳的过期时间 keys pattern 查找所有匹配给定的模式的键 migrate host port key destination-db timeout [copy] [replace] 原子性的将key从redis的一个实例移到另一个实例 move key db 移动一个key到另一个数据库 object subcommand [arguments [arguments ...]] 检查内部的再分配对象 persist key 移除key的过期时间 pexpire key milliseconds 设置key的有效时间以毫秒为单位 pexpireat key milliseconds-timestamp 设置key的到期unix时间戳以毫秒为单位 pttl key 获取key的有效毫秒数 randomkey 返回一个随机的key rename key newkey 将一个key重命名 renamenx key newkey 重命名一个key,新的key必须是不存在的key restore key ttl serialized-value [replace] create a key using the provided serialized value, previously obtained using dump. sort key [by pattern] [limit offset count] [get pattern [get pattern ...]] [asc|desc] [alpha] [store destination] 对队列、集合、有序集合排序 ttl key 获取key的有效时间(单位:秒) type key 获取key的存储类型 wait numslaves timeout wait for the synchronous replication of all the write commands sent in the context of the current connection scan cursor [match pattern] [count count] 增量迭代key ###Lists### blpop key [key ...] timeout 删除,并获得该列表中的第一元素,或阻塞,直到有一个可用 brpop key [key ...] timeout 删除,并获得该列表中的最后一个元素,或阻塞,直到有一个可用 brpoplpush source destination timeout 弹出一个列表的值,将它推到另一个列表,并返回它;或阻塞,直到有一个可用 lindex key index 获取一个元素,通过其索引列表 linsert key before|after pivot value 在列表中的另一个元素之前或之后插入一个元素 llen key 获得队列(list)的长度 lpop key 从队列的左边出队一个元素 lpush key value [value ...] 从队列的左边入队一个或多个元素 lpushx key value 当队列存在时,从队到左边入队一个元素 lrange key start stop 从列表中获取指定返回的元素 lrem key count value 从列表中删除元素 lset key index value 设置队列里面一个元素的值 ltrim key start stop 修剪到指定范围内的清单 rpop key 从队列的右边出队一个元 rpoplpush source destination 删除列表中的最后一个元素,将其追加到另一个列表 rpush key value [value ...] 从队列的右边入队一个元素 rpushx key value 从队列的右边入队一个元素,仅队列存在时有效 ###Pub/Sub### psubscribe pattern [pattern ...] listen for messages published to channels matching the given patterns pubsub subcommand [argument [argument ...]] inspect the state of the pub/sub subsystem publish channel message 发布一条消息到频道 punsubscribe [pattern [pattern ...]] 停止发布到匹配给定模式的渠道的消息听 subscribe channel [channel ...] 监听频道发布的消息 unsubscribe [channel [channel ...]] 停止频道监听 ###Scripting### eval script numkeys key [key ...] arg [arg ...] 在服务器端执行 lua 脚本 evalsha sha1 numkeys key [key ...] arg [arg ...] 在服务器端执行 lua 脚本 script debug yes|sync|no set the debug mode for executed scripts. script exists script [script ...] check existence of scripts in the script cache. script flush 删除服务器缓存中所有lua脚本。 script kill 杀死当前正在运行的 lua 脚本。 script load script 从服务器缓存中装载一个lua脚本。 ###Server### bgrewriteaof 异步重写追加文件命令 bgsave 异步保存数据集到磁盘上 client kill [ip:port] [id client-id] [type normal|slave|pubsub] [addr ip:port] [skipme yes/no] 关闭客户端连接 client list 获得客户端连接列表 client getname 获得当前连接名称 client id returns the client id for the current connection client pause timeout 暂停处理客户端命令 client reply on|off|skip instruct the server whether to reply to commands client setname connection-name 设置当前连接的名字 client unblock client-id [timeout|error] unblock a client blocked in a blocking command from a different connection command get array of redis command details command count get total number of redis commands command getkeys extract keys given a full redis command command info command-name [command-name ...] get array of specific redis command details config get parameter 获取配置参数的值 config rewrite 从写内存中的配置文件 config set parameter value 设置配置文件 config resetstat 复位再分配使用info命令报告的统计 dbsize 返回当前数据库里面的keys数量 debug object key 获取一个key的debug信息 debug segfault 使服务器崩溃命令 flushall 清空所有数据库命令 flushdb 清空当前的数据库命令 info [section] 获得服务器的详细信息 lastsave 获得最后一次同步磁盘的时间 memory doctor outputs memory problems report memory help show helpful text about the different subcommands memory-malloc-stats show allocator internal stats memory-purge ask the allocator to release memory memory-stats show memory usage details memory-usage key [samples count] estimate the memory usage of a key monitor 实时监控服务器 replicaof host port make the server a replica of another instance, or promote it as master. role return the role of the instance in the context of replication save 同步数据到磁盘上 shutdown [nosave] [save] 关闭服务 slaveof host port 指定当前服务器的主服务器 slowlog subcommand [argument] 管理再分配的慢查询日志 sync 用于复制的内部命令 time 返回当前服务器时间 ###Sets### sadd key member [member ...] 添加一个或者多个元素到集合(set)里 scard key 获取集合里面的元素数量 sdiff key [key ...] 获得队列不存在的元素 sdiffstore destination key [key ...] 获得队列不存在的元素,并存储在一个关键的结果集 sinter key [key ...] 获得两个集合的交集 sinterstore destination key [key ...] 获得两个集合的交集,并存储在一个关键的结果集 sismember key member 确定一个给定的值是一个集合的成员 smembers key 获取集合里面的所有元素 smove source destination member 移动集合里面的一个元素到另一个集合 spop key [count] 删除并获取一个集合里面的元素 srandmember key [count] 从集合里面随机获取一个元素 srem key member [member ...] 从集合里删除一个或多个元素 sunion key [key ...] 添加多个set元素 sunionstore destination key [key ...] 合并set元素,并将结果存入新的set里面 sscan key cursor [match pattern] [count count] 迭代set里面的元素 ###Sorted Sets### zadd key [nx|xx] [ch] [incr] score member [score member ...] 添加到有序set的一个或多个成员,或更新的分数,如果它已经存在 zcard key 获取一个排序的集合中的成员数量 zcount key min max 返回分数范围内的成员数量 zincrby key increment member 增量的一名成员在排序设置的评分 zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max] 相交多个排序集,导致排序的设置存储在一个新的关键 zlexcount key min max 返回成员之间的成员数量 zpopmax key [count] remove and return members with the highest scores in a sorted set zpopmin key [count] remove and return members with the lowest scores in a sorted set zrange key start stop [withscores] 根据指定的index返回,返回sorted set的成员列表 zrangebylex key min max [limit offset count] 返回指定成员区间内的成员,按字典正序排列, 分数必须相同。 zrevrangebylex key max min [limit offset count] 返回指定成员区间内的成员,按字典倒序排列, 分数必须相同 zrangebyscore key min max [withscores] [limit offset count] 返回有序集合中指定分数区间内的成员,分数由低到高排序。 zrank key member 确定在排序集合成员的索引 zrem key member [member ...] 从排序的集合中删除一个或多个成员 zremrangebylex key min max 删除名称按字典由低到高排序成员之间所有成员。 zremrangebyrank key start stop 在排序设置的所有成员在给定的索引中删除 zremrangebyscore key min max 删除一个排序的设置在给定的分数所有成员 zrevrange key start stop [withscores] 在排序的设置返回的成员范围,通过索引,下令从分数高到低 zrevrangebyscore key max min [withscores] [limit offset count] 返回有序集合中指定分数区间内的成员,分数由高到低排序。 zrevrank key member 确定指数在排序集的成员,下令从分数高到低 zscore key member 获取成员在排序设置相关的比分 zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max] 添加多个排序集和导致排序的设置存储在一个新的关键 zscan key cursor [match pattern] [count count] 迭代sorted sets里面的元素 ###Streams### xack key group id [id ...] marks a pending message as correctly processed, effectively removing it from the pending entries list of the consumer group. xadd key id field string [field string ...] appends a new entry to a stream xclaim key group consumer min-idle-time id [id ...] [idle ms] [time ms-unix-time] [retrycount count] [force] [justid] changes (or acquires) ownership of a message in a consumer group, as if the message was delivered to the specified consumer. xdel key id [id ...] removes the specified entries from the stream. xgroup [create key groupname id-or-$] [setid key id-or-$] [destroy key groupname] [delconsumer key groupname consumername] create, destroy, and manage consumer groups. xinfo [consumers key groupname] [groups key] [stream key] [help] get information on streams and consumer groups xlen key return the number of entires in a stream xpending key group [start end count] [consumer] return information and entries from a stream consumer group pending entries list, that are messages fetched but never acknowledged. xrange key start end [count count] return a range of elements in a stream, with ids matching the specified ids interval xread [count count] [block milliseconds] streams key [key ...] id [id ...] return never seen elements in multiple streams, with ids greater than the ones reported by the caller for each stream. can block. xreadgroup group group consumer [count count] [block milliseconds] streams key [key ...] id [id ...] return new entries from a stream using a consumer group, or access the history of the pending entries for a given consumer. can block. xrevrange key end start [count count] return a range of elements in a stream, with ids matching the specified ids interval, in reverse order (from greater to smaller ids) compared to xrange xtrim key maxlen [~] count trims the stream to (approximately if '~' is passed) a certain size ###Strings### append key value 追加一个值到key上 bitcount key [start end] 统计字符串指定起始位置的字节数 bitfield key [get type offset] [set type offset value] [incrby type offset increment] [overflow wrap|sat|fail] perform arbitrary bitfield integer operations on strings bitop operation destkey key [key ...] perform bitwise operations between strings bitpos key bit [start] [end] find first bit set or clear in a string decr key 整数原子减1 decrby key decrement 原子减指定的整数 get key 返回key的value getbit key offset 返回位的值存储在关键的字符串值的偏移量。 getrange key start end 获取存储在key上的值的一个子字符串 getset key value 设置一个key的value,并获取设置前的值 incr key 执行原子加1操作 incrby key increment 执行原子增加一个整数 incrbyfloat key increment 执行原子增加一个浮点数 mget key [key ...] 获得所有key的值 mset key value [key value ...] 设置多个key value msetnx key value [key value ...] 设置多个key value,仅当key存在时 psetex key milliseconds value set the value and expiration in milliseconds of a key set key value [ex seconds] [px milliseconds] [nx|xx] 设置一个key的value值 setbit key offset value sets or clears the bit at offset in the string value stored at key setex key seconds value 设置key-value并设置过期时间(单位:秒) setnx key value 设置的一个关键的价值,只有当该键不存在 setrange key offset value overwrite part of a string at key starting at the specified offset strlen key 获取指定key值的长度 ###Transactions### discard 丢弃所有 multi 之后发的命令 exec 执行所有 multi 之后发的命令 multi 标记一个事务块开始 unwatch 取消事务命令 watch key [key ...] 锁定key直到执行了 multi/exec 命令
命令详解-常用
以下列举常用命令解释,其他命令详解可到官网查看,直接搜索相关命令即可。
其中Hashes、Lists、Sets、Sorted Sets、Strings、Streams为数据结构操作,可参考Redis_数据使用或官网查看。
其中Geo为地址位置相关信息查看,HyperLogLog为算法相关命令,较高深,可参考官网。
重要:Redis集群在一些统计相关命令下及不友好,例如info commandstats、slowlog get、pubsub channels等统计命令下只统计了本节点下的数据,请使用时注意。
Redis集群数据是通过key的hash槽点定位到对应节点以达到存储数据的存/取,各节点数据是独立的,不同的。
Redis在集群中使用redis提供的事务机制要慎重。(以上只是本人简单测试的结果和理解,还请大神指点集群中统计信息的解决办法)
1、Cluster
Redis集群相关信息操作。
###cluster### cluster info //返回集群信息 127.0.0.1:7004> cluster info cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:6 cluster_size:3 cluster_current_epoch:7 cluster_my_epoch:7 cluster_stats_messages_ping_sent:53434 cluster_stats_messages_pong_sent:5262 cluster_stats_messages_auth-req_sent:5 cluster_stats_messages_sent:58701 cluster_stats_messages_ping_received:5258 cluster_stats_messages_pong_received:4956 cluster_stats_messages_fail_received:4 cluster_stats_messages_auth-ack_received:2 cluster_stats_messages_received:10220 tips: cluster_state: ok状态表示集群可以正常接受查询请求。fail 状态表示至少有一个哈希槽没有被绑定、或者在错误的状态、或者该节点无法联系到多数master节点。. cluster_slots_assigned: 已分配到集群节点的哈希槽数量,16384个哈希槽全部被分配到集群节点是集群正常运行的必要条件. cluster_slots_ok: 哈希槽状态不是FAIL 和 PFAIL 的数量. cluster_slots_pfail: 哈希槽状态是PFAIL的数量。PFAIL表示当前不能和节点进行交互,只是临时的错误状态。只要哈希槽状态没有被升级到FAIL状态,这些哈希槽仍然可以被正常处理。 cluster_slots_fail: 哈希槽状态是FAIL的数量。如果值不是0,那么集群节点将无法提供查询服务,除非cluster-require-full-coverage被设置为no 。 cluster_known_nodes: 集群中节点数量,包括处于握手状态还没有成为集群正式成员的节点. cluster_size: 至少包含一个哈希槽且能够提供服务的master节点数量. cluster_current_epoch: 集群本地Current Epoch变量的值。这个值在节点故障转移过程时有用,它总是递增和唯一的。 cluster_my_epoch: 当前正在使用的节点的Config Epoch值. 这个是关联在本节点的版本值. cluster_stats_messages_ping_sent: cluster_stats_messages_pong_sent: cluster_stats_messages_auth-req_sent: cluster_stats_messages_sent: 通过node-to-node二进制总线发送的消息数量. cluster_stats_messages_ping_received: cluster_stats_messages_pong_received: cluster_stats_messages_fail_received: cluster_stats_messages_auth-ack_received: cluster_stats_messages_received: 通过node-to-node二进制总线接收的消息数量. cluster nodes //返回节点信息 c20a6b16d5e1f2269d966ff10f78e61026e0d722 127.0.0.1:7001@17001 myself,master - 0 1587522177000 1 connected 0-5460 a021ce6216cc9a93218d538e626441c9a3cb99a5 127.0.0.1:7005@17005 slave f1d4c0dff49c27d5b80684d2ac37dde5a6e22d2d 0 1587522176114 5 connected 4db04880e8d51e60cfe0f569df83c47d205688aa 127.0.0.1:7002@17002 slave a1ac254d0ec66d8861081c0935a0daa4cb113508 0 1587522178162 7 connected a1ac254d0ec66d8861081c0935a0daa4cb113508 127.0.0.1:7004@17004 master - 0 1587522179182 7 connected 5461-10922 b9ecf2cecdbf4c6db1a054cdc953613e4eebc591 127.0.0.1:7006@17006 slave c20a6b16d5e1f2269d966ff10f78e61026e0d722 0 1587522177136 6 connected f1d4c0dff49c27d5b80684d2ac37dde5a6e22d2d 127.0.0.1:7003@17003 master - 0 1587522177000 3 connected 10923-16383 tips: id: 节点ID,是一个40字节的随机字符串,这个值在节点启动的时候创建,并且永远不会改变(除非使用CLUSTER RESET HARD命令)。 ip:port: 客户端与节点通信使用的地址. flags: 逗号分割的标记位,可能的值有: myself, master, slave, fail?, fail, handshake, noaddr, noflags. 下一部分将详细介绍这些标记. master: 如果节点是slave,并且已知master节点,则这里列出master节点ID,否则的话这里列出”-“。 ping-sent: 最近一次发送ping的时间,这个时间是一个unix毫秒时间戳,0代表没有发送过. pong-recv: 最近一次收到pong的时间,使用unix时间戳表示. config-epoch: 节点的epoch值,每当节点发生失败切换时,都会创建一个新的,独特的,递增的epoch。如果多个节点竞争同一个哈希槽时,epoch值更高的节点会抢夺到。 link-state: node-to-node集群总线使用的链接的状态,我们使用这个链接与集群中其他节点进行通信.值可以是 connected 和 disconnected. slot: 哈希槽值或者一个哈希槽范围. flags解释: myself: 当前连接的节点. master: 节点是master. slave: 节点是slave. fail?: 节点处于PFAIL 状态。 当前节点无法联系,但逻辑上是可达的 (非 FAIL 状态). fail: 节点处于FAIL 状态. 大部分节点都无法与其取得联系将会将改节点由 PFAIL 状态升级至FAIL状态。 handshake: 还未取得信任的节点,当前正在与其进行握手. noaddr: 没有地址的节点(No address known for this node). noflags: 连个标记都没有(No flags at all). cluster replicas node-id 该命令会列出指定主节点的辅助副本节点,输出格式同命令CLUSTER NODES cluster replicate node-id 该命令重新配置一个节点成为指定master的salve节点。 如果收到命令的节点是一个empty master,那么该节点的角色将由master切换为slave。 如果收到命令的节点不是slave而是master,只要在如下情况下,命令才会执行成功,该节点才会切换为slave: 1、该节点不保存任何hash槽 2、该节点是空的,key空间中不存储任何键 如果命令执行成功,新的slave会立即尝试连接它的master以便进行数据复制 cluster slaves node-id 该命令会列出指定master节点所有slave节点,格式同CLUSTER NODES cluster slots //列出所有节点hash槽情况 127.0.0.1:7001> cluster slots 1) 1) (integer) 0 2) (integer) 5460 3) 1) "127.0.0.1" 2) (integer) 7001 3) "c20a6b16d5e1f2269d966ff10f78e61026e0d722" 4) 1) "127.0.0.1" 2) (integer) 7006 3) "b9ecf2cecdbf4c6db1a054cdc953613e4eebc591" 2) 1) (integer) 5461 2) (integer) 10922 3) 1) "127.0.0.1" 2) (integer) 7004 3) "a1ac254d0ec66d8861081c0935a0daa4cb113508" 4) 1) "127.0.0.1" 2) (integer) 7002 3) "4db04880e8d51e60cfe0f569df83c47d205688aa" 3) 1) (integer) 10923 2) (integer) 16383 3) 1) "127.0.0.1" 2) (integer) 7003 3) "f1d4c0dff49c27d5b80684d2ac37dde5a6e22d2d" 4) 1) "127.0.0.1" 2) (integer) 7005 3) "a021ce6216cc9a93218d538e626441c9a3cb99a5"
2、Connection
Redis连接相关命令。
###Connection### auth password 验证服务器密码命令 echo message 回显输入的字符串,即打印message。 ping 后面没有参数时返回PONG,否则返回参数。经常用来测试一个连接是否还是可用的,或者用来测试一个连接的延时。 quit 关闭连接,退出 select index 选择新数据库 swapdb index index 该命令可以交换同一Redis服务器上的两个DATABASE,可以实现连接某一数据库的连接立即访问到其他DATABASE的数据。访问交换前其他database的连接也可以访问到该DATABASE的数据。
3、Keys
Redis对存储数据key的其他操作。
###Keys### del key [key ...] 删除指定的key(一个或多个) dump key 导出key的值 exists key 查询一个key是否存在 expire key seconds 设置一个key的过期的秒数 expireat key timestamp 设置一个unix时间戳的过期时间 keys pattern 查找所有匹配给定的模式的键 move key db 移动一个key到另一个数据库 persist key 移除key的过期时间 pexpire key milliseconds 设置key的有效时间以毫秒为单位 pexpireat key milliseconds-timestamp 设置key的到期unix时间戳以毫秒为单位 pttl key 获取key的有效毫秒数 randomkey 返回一个随机的key rename key newkey 将一个key重命名 renamenx key newkey 重命名一个key,新的key必须是不存在的key ttl key 获取key的有效时间(单位:秒) type key 获取key的存储类型
4、Pub/Sub
Redis发布订阅。
###Pub/Sub### /** 1、redis的发布订阅类似于广播,可以实现消息的【发布-接受】,接收者必须在消息发布前订阅该发布渠道channel。 2、订阅者无限制,即集群中任意节点都可以有多个连接订阅某消息渠道; 3、subscribe、psubscribe在官方客户端为阻塞连接,故unsubscribe、punsubscribe无法模拟使用。 4、在集群中,发布-订阅信息无影响,但统计信息只统计到当前节点(包括命令执行返回的统计信息,例如:publish返回收到消息的客户端数,只统计连接当前节点的客户端); **/ pubsub subcommand [argument [argument ...]] pubsub 是自省命令,能够检测PUB/SUB子系统的状态。它由分别详细描述的子命令组成。通用格式如下:PUBSUB <subcommand> ... args ... 1、pubsub channels [pattern] 列出当前active channels.活跃是指信道含有一个或多个订阅者(不包括其他节点的订阅者) 如果pattern未提供,所有的信道都被列出,否则只列出匹配上指定全局-类型模式的信道被列出. 2、pubsub numsub [channel-1 ... channel-n] 列出指定信道的订阅者个数(不统计其他节点的订阅者),不给定任何频道只返回一个空列表. 3、pubsub numpat 返回订阅模式的数量.返回的不是订阅模式的客户端的数量,而是此客户端通过【psubscribe】订阅所有模式的数量总和。 subscribe channel [channel ...] 添加对一个或多个频道的订阅 unsubscribe [channel [channel ...]] 取消对一个或多个频道的订阅 psubscribe pattern [pattern ...] 取消对一个或多个模式类型频道的订阅 punsubscribe [pattern [pattern ...]] 取消对一个或多个模式类型频道的订阅 publish channel message 发布一条消息到频道
5、Scripting
Redis关于LUA脚本的使用。
###Scripting### eval script numkeys key [key ...] arg [arg ...] 在服务器端执行 lua 脚本 evalsha sha1 numkeys key [key ...] arg [arg ...] 在服务器端执行 lua 脚本 script debug yes|sync|no set the debug mode for executed scripts. script exists script [script ...] check existence of scripts in the script cache. script flush 删除服务器缓存中所有lua脚本。 script kill 杀死当前正在运行的 lua 脚本。 script load script 从服务器缓存中装载一个lua脚本。
6、Server
Redis服务器命令。
###Server### //文件即服务相关 time 返回当前服务器时间 save 同步数据到磁盘上 shutdown [nosave] [save] 关闭服务,关闭之前是否同步数据 role 返回当前节点角色信息 lastsave 获得最后一次同步磁盘的时间 dbsize 返回当前数据库里面的keys数量 debug segfault 使服务器崩溃命令 debug object key 获取一个key的debug信息,只能获取当前节点上的key flushall 清空所有数据库命令 flushdb 清空当前的数据库命令 bgrewriteaof 异步重写追加文件命令 bgsave 异步保存数据集到磁盘上 //配置相关 config get parameter 获取配置参数的值 config rewrite 从写内存中的配置文件 config set parameter value 设置配置文件 config resetstat 复位再分配INFO命令统计里面的一些计算器。 //连接相关 client list 获得客户端连接列表 client getname 获得当前连接名称 client id 获取当前连接ID client pause timeout 暂停处理客户端命令 client reply on|off|skip 设置服务器是否对客户端的命令进行回复。有如下选项:ON. 默认选项,回复客户端每条命令;OFF. 不回复客户端命令SKIP. 跳过该命令的回复 client setname connection-name 设置当前连接的名字 client kill [ip:port] [id client-id] [type normal|slave|pubsub] [addr ip:port] [skipme yes/no] 关闭客户端连接,后面跟筛选条件 client unblock client-id [timeout|error] 客户端阻塞设置命令 //内存相关 memory doctor 命令MEMORY DOCTOR 会列出 Redis 服务器遇到的不同类型的内存相关问题,并提供相应的解决建议 memory help 命令MEMORY HELP返回不同子命令的说明 memory malloc-stats 命令MEMORY MALLOC-STATS 提供内存分配情况的内部统计报表,该命令目前仅实现了jemalloc作为内存分配器的内存统计,对其他分配器暂不支持 memory purge 命令MEMORY PURGE 尝试清除脏页以便内存分配器回收使用,该命令目前仅实现了jemalloc作为内存分配器的内存统计,对其他分配器暂不支持 memory stats 命令MEMORY STATS 将服务器的内存使用情况以数组情况返回 memory usage key [samples count] 命令MEMORY USAGE返回的结果是key的值以及为管理该key分配的内存总字节数,对于嵌套数据类型,可以使用选项SAMPLES,其中COUNT表示抽样的元素个数,默认值为5。 当需要抽样所有元素时,使用SAMPLES 0 //命令统计相关 command 以数组的形式返回有关所有Redis命令的详细信息,详细解释见官网。 command count 返回Redis服务器支持命令的总数。 command getkeys COMMAND GETKEYS是一个辅助命令,让你可以从完整的Redis命令中找到key。例:COMMAND GETKEYS MSET a b c d e f command info command-name [command-name ...] 返回内容与command一致,只是提供了命令筛选,如:command info get set //其他 monitor 实时监控服务器 replicaof host port make the server a replica of another instance, or promote it as master. slaveof host port 指定当前服务器的主服务器 sync 用于复制的内部命令 //日志相关 slowlog subcommand [argument] /** 1、Redis慢查询日志是一个记录超过指定执行时间的查询的系统。这里的执行时间不包括IO操作,比如与客户端通信,发送回复等等,而只是实际执行命令所需的时间。 2、slowlog-log-slower-than配置Redis命令执行时间超过多少微秒被记录,使用负数将会关闭慢查询日志,而为0将强制记录每一个命令。 3、slowlog-max-len是慢查询日志的长度,最小值是0。当一个新命令被记录,且慢查询日志已经达到其最大长度时,将从记录命令的队列中移除删除最旧的命令以腾出空间。 **/ slowlog len 可以获得慢查询日志的长度 slowlog reset 可以获得慢查询日志的长度 slowlog get 10 查询指定数量慢日志信息,缺省为全部查询 127.0.0.1:7001> slowlog get 2 1) 1) (integer) 0 //每个慢查询条目的唯一的递增标识符 2) (integer) 1587529911 //处理记录命令的unix时间戳 3) (integer) 56570 //命令执行所需的总时间,以微秒为单位 4) 1) "PSYNC" //组成该命令的参数的数组 2) "810b70fdd00c461d7e4859463e9265789bd8ba0a" 3) "1" 5) "127.0.0.1:39920" 6) ""
###Server### info [section] /** 1、info信息是redis重要的运行状态,数据分析命令。 2、通过给定可选的参数 section ,可以让命令只返回某一部分的信息,默认为default: server: Redis服务器的一般信息 clients: 客户端的连接部分 memory: 内存消耗相关信息 persistence: RDB和AOF相关信息 stats: 一般统计 replication: 主/从复制信息 cpu: 统计CPU的消耗 commandstats: Redis命令统计 cluster: Redis集群信息 keyspace: 数据库的相关统计 它也可以采取以下值: all: 返回所有信息 default: 值返回默认设置的信息,默认只是少了commandstats信息 3、本文采用redis-5.0.8,查询结果集可能与之前版本不一样。 4、有些参数官网未给出,技术有限,测不出含义,但不常用。 **/ info server 127.0.0.1:7001> info server # Server redis_version:5.0.8 //Redis 服务器版本 redis_git_sha1:00000000 //Git版本SHA1值 redis_git_dirty:0 //Git版本dirty值 redis_build_id:6d5a2b08f32bbbe7 //构建ID redis_mode:cluster //服务器模式(standalone,sentinel或者cluster) os:Linux 3.10.0-1062.1.1.el7.x86_64 x86_64 //运行服务器版本 arch_bits:64 //redis架构 multiplexing_api:epoll //Redis 所使用的事件处理机制 atomicvar_api:atomic-builtin //Redis使用的Atomicvar API gcc_version:4.8.5 //编译 Redis 时所使用的 GCC 版本 process_id:1392 //服务器进程的 PID run_id:f4455d3123c8a15209116cef94fc6f5bfd68e6e9 //Redis 服务器的随机标识符(用于 Sentinel 和集群) tcp_port:7001 //Redis 服务器的随机标识符(用于 Sentinel 和集群) uptime_in_seconds:6917 //自 Redis 服务器启动以来,经过的秒数 uptime_in_days:0 //自 Redis 服务器启动以来,经过的天数 hz:10 //服务器的频率设置 configured_hz:10 lru_clock:10478499 //以分钟为单位进行自增的时钟,用于 LRU 管理 executable:/root/redis/bin/redis-server //服务器的可执行文件路径 config_file:/root/redis/cluster/7001/redis.conf //配置文件路径 info clients 127.0.0.1:7001> info clients # Clients connected_clients:1 //已连接客户端的数量(不包括连接到集群或从节点的客户端) client_recent_max_input_buffer:2 //当前连接的客户端当中,最长的输出列表 client_recent_max_output_buffer:0 //当前连接的客户端当中,最大输入缓存 blocked_clients:0 //正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量 info memory 127.0.0.1:7001> info memory # Memory used_memory:2655232 //由 Redis 分配器分配的内存总量,以字节(byte)为单位 used_memory_human:2.53M //以人类可读的格式返回 Redis 分配的内存总量 used_memory_rss:9117696 //从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。 used_memory_rss_human:8.70M //以人类可读的格式返回 Redis 的内存消耗峰值 used_memory_peak:2697416 //Redis 的内存消耗峰值(以字节为单位) used_memory_peak_human:2.57M //以人类可读的格式返回 Redis 的内存消耗峰值 used_memory_peak_perc:98.44% //使用内存占峰值内存的百分比 used_memory_overhead:2578664 //服务器为管理其内部数据结构而分配的所有开销的总和(以字节为单位) used_memory_startup:1463184 //Redis在启动时消耗的初始内存大小(以字节为单位) used_memory_dataset:76568 //以字节为单位的数据集大小(used_memory减去used_memory_overhead) used_memory_dataset_perc:6.42% //used_memory_dataset占净内存使用量的百分比(used_memory减去used_memory_startup) allocator_allocated:2696880 allocator_active:2940928 allocator_resident:5341184 total_system_memory:1019641856 //Redis主机具有的内存总量 total_system_memory_human:972.41M //以人类可读的格式返回 Lua 引擎所使用的内存大小 used_memory_lua:37888 //Lua 引擎所使用的内存大小(以字节为单位) used_memory_lua_human:37.00K //以人类可读的格式返回 Lua 引擎所使用的内存大小 used_memory_scripts:0 used_memory_scripts_human:0B number_of_cached_scripts:0 maxmemory:0 //maxmemory配置指令的值 maxmemory_human:0B //以人类可读的格式返回 maxmemory配置指令的值 maxmemory_policy:noeviction //maxmemory-policy配置指令的值 allocator_frag_ratio:1.09 allocator_frag_bytes:244048 allocator_rss_ratio:1.82 allocator_rss_bytes:2400256 rss_overhead_ratio:1.71 rss_overhead_bytes:3776512 mem_fragmentation_ratio:3.49 //used_memory_rss 和 used_memory 之间的比率 mem_fragmentation_bytes:6503480 mem_not_counted_for_evict:104 mem_replication_backlog:1048576 mem_clients_slaves:16922 mem_clients_normal:49694 mem_aof_buffer:104 mem_allocator:jemalloc-5.1.0 //在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。 active_defrag_running:0 // 指示活动碎片整理是否处于活动状态的标志 lazyfree_pending_objects:0 // 等待释放的对象数(由于使用ASYNC选项调用UNLINK或FLUSHDB和FLUSHALL) info persistence 127.0.0.1:7001> info persistence # Persistence loading:0 //指示转储文件(dump)的加载是否正在进行的标志 rdb_changes_since_last_save:0 //自上次转储以来的更改次数 rdb_bgsave_in_progress:0 //指示RDB文件是否正在保存的标志 rdb_last_save_time:1587531125 //上次成功保存RDB的基于纪年的时间戳 rdb_last_bgsave_status:ok //上次RDB保存操作的状态 rdb_last_bgsave_time_sec:0 //上次RDB保存操作的持续时间(以秒为单位) rdb_current_bgsave_time_sec:-1 //正在进行的RDB保存操作的持续时间(如果有) rdb_last_cow_size:2322432 //上次RDB保存操作期间copy-on-write分配的字节大小 aof_enabled:1 //表示AOF记录已激活的标志 aof_rewrite_in_progress:0 //表示AOF重写操作正在进行的标志 aof_rewrite_scheduled:0 //表示一旦进行中的RDB保存操作完成,就会安排进行AOF重写操作的标志 aof_last_rewrite_time_sec:-1 //上次AOF重写操作的持续时间,以秒为单位 aof_current_rewrite_time_sec:-1 // 正在进行的AOF重写操作的持续时间(如果有) aof_last_bgrewrite_status:ok //上次AOF重写操作的状态 aof_last_write_status:ok //上一次AOF写入操作的状态 aof_last_cow_size:0 //上次AOF重写操作期间copy-on-write分配的字节大小 如果启用了AOF,则会添加以下这些额外的字段: aof_current_size:227 //当前的AOF文件大小 aof_base_size:175 //上次启动或重写时的AOF文件大小 aof_pending_rewrite:0 //指示AOF重写操作是否会在当前RDB保存操作完成后立即执行的标志。 aof_buffer_length:0 //AOF缓冲区大小 aof_rewrite_buffer_length:0 //AOF重写缓冲区大小 aof_pending_bio_fsync:0 //在后台IO队列中等待fsync处理的任务数 aof_delayed_fsync:0 //延迟fsync计数器 如果正在执行加载操作,将会添加这些额外的字段: loading_start_time: //加载操作的开始时间(基于纪元的时间戳) loading_total_bytes: //文件总大小 loading_loaded_bytes: //已经加载的字节数 loading_loaded_perc: //已经加载的百分比 loading_eta_seconds: //预计加载完成所需的剩余秒数 info stats 127.0.0.1:7001> info stats # Stats total_connections_received:5 //服务器接受的连接总数 total_commands_processed:9357 // 服务器处理的命令总数 instantaneous_ops_per_sec:1 //每秒处理的命令数 total_net_input_bytes:347570 // total_net_output_bytes:81848 instantaneous_input_kbps:0.04 instantaneous_output_kbps:0.00 rejected_connections:0 //由于maxclients限制而拒绝的连接数 sync_full:1 sync_partial_ok:0 sync_partial_err:1 expired_keys:0 //key到期事件的总数 expired_stale_perc:0.00 expired_time_cap_reached_count:0 evicted_keys:0 //由于maxmemory限制而导致被驱逐的key的数量 keyspace_hits:0 //在主字典中成功查找到key的次数 keyspace_misses:1 //在主字典中查找key失败的次数 pubsub_channels:0 //拥有客户端订阅的全局pub/sub通道数 pubsub_patterns:0 //拥有客户端订阅的全局pub/sub模式数 latest_fork_usec:640 //最新fork操作的持续时间,以微秒为单位 migrate_cached_sockets:0 slave_expires_tracked_keys:0 active_defrag_hits:0 active_defrag_misses:0 active_defrag_key_hits:0 active_defrag_key_misses:0 info replication 127.0.0.1:7001> info replication # Replication role:master //如果实例不是任何节点的从节点,则值是”master”,如果实例从某个节点同步数据,则是”slave”。一个从节点可以是另一个从节点的主节点(菊花链) connected_slaves:1 //已连接的从节点数 slave0:ip=127.0.0.1,port=7006,state=online,offset=13478,lag=0 //从节点信息 master_replid:2683e6d66969fc113b25f120714691ab46cee6ef master_replid2:0000000000000000000000000000000000000000 master_repl_offset:13478 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:13478 info cpu 127.0.0.1:7001> info cpu # CPU used_cpu_sys:8.630522 //由Redis服务器消耗的系统CPU used_cpu_user:7.188287 //由Redis服务器消耗的用户CPU used_cpu_sys_children:0.033723 //由后台进程消耗的系统CPU used_cpu_user_children:0.000000 //由后台进程消耗的用户CPU info cluster 127.0.0.1:7001> info cluster # Cluster cluster_enabled:1 //表示已启用Redis集群 info keyspace 127.0.0.1:7001> info keyspace # Keyspace db0:keys=3,expires=0,avg_ttl=0 //key相关解释 info commandstats 127.0.0.1:7001> info commandstats # Commandstats //统计已执行过的redis命令,内容为:命令名:执行次数:总耗时:平均耗时(毫秒) cmdstat_replconf:calls=10710,usec=17202,usec_per_call=1.61 cmdstat_memory:calls=4,usec=2681,usec_per_call=670.25 cmdstat_set:calls=2,usec=15,usec_per_call=7.50 cmdstat_cluster:calls=1,usec=79,usec_per_call=79.00 cmdstat_command:calls=12,usec=4152,usec_per_call=346.00 cmdstat_psync:calls=1,usec=56570,usec_per_call=56570.00 cmdstat_info:calls=17,usec=882,usec_per_call=51.88 cmdstat_ping:calls=1,usec=1,usec_per_call=1.00 cmdstat_slowlog:calls=3,usec=32,usec_per_call=10.67 cmdstat_get:calls=1,usec=1,usec_per_call=1.00
7、Transactions
Redis事务命令和举例使用。
###Transactions### multi 标记一个事务块开始 exec 执行所有 multi 之后发的命令 discard 丢弃所有 multi 之后发的命令 watch key [key ...] 锁定key直到执行了 multi/exec 命令 unwatch 取消事务命令 举例-单节点: 127.0.0.1:7004> set name zhang OK 127.0.0.1:7004> WATCH name OK 127.0.0.1:7004> MULTI OK 127.0.0.1:7004> set name2 li OK 127.0.0.1:7004> EXEC OK 127.0.0.1:7001> UNWATCH name /** 1、正常情况下此命令执行成功。 2、挡在WATCH name之后开启事务,此时如果另一个客户端对key【name】进行修改(select也算),则事务提交时会执行失败,回滚。 3、集群中redis事务较难使用 **/