Redis | Redis常用命令及示例总结(API)
前言
参考文档:http://doc.redisfans.com/index.html
本篇主要总结Redis的常用命令,笔者在记录命令时的格式如下:
- 命令关键字:
命令示例
;命令说明;- 命令参数解释及一些说明;
其中命令关键字使用小写是为了方便记忆,按规范来说应该采用大写字母。实际中大小写不区分,大写小写Redis都能识别命令。Redis在设置命令时有一些互通的思想,如下:
设置操作有则覆盖,无则新建。 在设置键值对时,若key已经存在,则将新值覆盖旧值;反之则创建一个新的键值对;
索引操作可以负数。 一些 start 和 end 的偏移量可以使用负数。负数偏移量表示从字符串最后开始计数, -1 表示最后一个字符,而 -2 表示倒数第二个位,以此类推;
使用inf表示最值。 inf可以在不知道有序集的最低和最高 score 值的情况下,使用 ZRANGEBYSCORE 这类命令;
文章会根据笔者的学习进度持续更新……
1. Key(键)
key为键值对的键;value为键值对的值;[]为可省内容;pattern为给定格式,类比正则式;seconds和timestamp表示时间;timeout表示时间,单位ms;host:port为主机名:端口号;ttl为毫秒值;offset为数字,表示初始下标;count为数字,表示数量;destination为键值对的键,表示目的键;
1.1 键的基本操作功能
del move rename renamenx migrate
- del:
DEL key [key ...]
;删除给定的一个或多个 key; - move:
MOVE key db
;将当前数据库的 key 移动到给定的数据库 db 当中; - rename:
RENAME key newkey
;将 key 改名为 newkey; - renamenx:
RENAMENX key newkey
;当且仅当 newkey 不存在时,将 key 改名为 newkey; - migrate:
MIGRATE host port key destination-db timeout [COPY] [REPLACE]
;将 key 原子性地从当前实例传送到目标实例 host:port 的指定数据库上,一旦传送成功, key 保证会出现在目标实例上,而当前实例上的 key 会被删除;- COPY :不移除源实例上的 key;
- REPLACE :替换目标实例上已存在的 key;
1.2 键的获取功能
type exists randomkey keys
- type:
TYPE key
;返回数据库键对应的类型; - exists:
EXISTS key
;检查给定 key 是否存在; - randomkey:
RANDOMKEY
;从当前数据库中随机返回(不删除)一个 key ; - keys:
KEYS pattern
;查找所有符合给定模式 pattern 的 key;- KEYS * 匹配数据库中所有 key;
- KEYS h?llo 匹配 hello , hallo 和 hxllo 等;
- KEYS h*llo 匹配 hllo 和 heeeeello 等;
- KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo;
- 特殊符号用 \ 隔开;
1.3 键的排序功能
sort asc/desc/alpha/by/limit/get/store
- sort:
SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC] [ALPHA] [STORE destination]
;返回或保存给定列表、集合、有序集合 key 中经过排序的元素。排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较; - sort:
SORT key
;返回键值从小到大排序的结果; - sort ... asc:
SORT key ASC
;返回键值从小到大排序的结果; - sort ... desc:
SORT key DESC
;返回键值从大到小排序的结果; - sort ... alpha:
SORT key ALPHA
;可以对包含字符串的键进行排列; - sort ... by ...:
SORT key BY pattern
;可以指定某些字符串键,或者某个哈希键说包含的某些域来作为权重,对一个键排序; - sort ... limit ...:
SORT key LIMIT offset count
;可以让结果只返回其中部分已排序的元素; - sort ... get ...:
SORT key GET pattern
;可以在键被排序后,根据被排序的元素,以及 GET 选项指定的模式,查找并返回某些键的值; - sort ... store ...:
SORT key STORE destination
;可以将排序结果保存在指定的键里面;
1.4 生存时间的功能
expire pexpire expireat persist ttl pttl
- expire:
EXPIRE key seconds
;将键key的生存时间设置为 seconds 秒; - pexpire:
PEXPIRE key milliseconds
;与 EXPIRE 命令的作用类似,将键key的生存时间设置为 milliseconds 毫秒; - expireat:
EXPIREAT key timestamp
;将键 key 的过期时间设置为 timestamp 所指定的秒数时间戳; - pexpireat:
PEXPIREAT key milliseconds-timestamp
;与 EXPIREAT 命令的作用类似,将键 key 的过期时间设置为 milliseconds-timestamp 所指定的毫秒数时间戳; - persist:
PERSIST key
;移除给定 key 的生存时间,将这个 key 从『易失的』(带生存时间 key )转换成『持久的』(一个不带生存时间、永不过期的 key ); - ttl:
TTL key
;以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live); - pttl:
PTTL key
;这个命令类似于 TTL 命令,但它以毫秒为单位返回 key 的剩余生存时间,而不是像 TTL 命令那样,以秒为单位;
1.5 序列化与反序列化的功能
dump restore
- dump:
DUMP key
;序列化给定 key ,并返回被序列化的值,使用 RESTORE 命令可以将这个值反序列化为 Redis 键。序列化生成的值有以下几个特点:- 它带有 64 位的校验和,用于检测错误, RESTORE 在进行反序列化之前会先检查校验和;
- 值的编码格式和 RDB 文件保持一致;
- RDB 版本会被编码在序列化值当中,如果因为 Redis 的版本不同造成 RDB 格式不兼容,那么 Redis 会拒绝对这个值进行反序列化操作;
- restore:
RESTORE key ttl serialized-value
;反序列化给定的序列化值,并将它和给定的 key 关联。参数 ttl 以毫秒为单位为 key 设置生存时间;如果 ttl 为 0 ,那么不设置生存时间;
1.6 键的迭代遍历功能
scan
- scan:
SCAN cursor [MATCH pattern] [COUNT count]
;SCAN 命令是一个基于游标的迭代器(cursor based iterator): SCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程;- 当 SCAN 命令的游标参数被设置为 0 时, 服务器将开始一次新的迭代;
- 而当服务器向用户返回值为 0 的游标时, 表示迭代已结束;
1.7 OBJECT命令
refcount ecoding idletime
- object refcount:
OBJECT REFCOUNT key
;返回给定 key 引用所储存的值的次数。此命令主要用于除错; - object ecoding:
OBJECT ENCODING key
;查看一个数据库键的值对象编码; - object idletime:
OBJECT IDLETIME key
;返回给定 key 自储存以来的空转时间,单位秒;
2. String(字符串)
key为键值对的键;value为键值对的值;increment为浮点数增量;offset为数字,表示偏移量;start和end为数字,表示索引;destkey表示结果;
2.1 键值对的操作功能
set get setnx getset mset mget msetnx setex psetex
- set:
SET key "value"
;设置键值对; - get:
GET key
;根据键获取值; - setnx:
SETNX key value
;将 key 的值设为 value ,当且仅当 key 不存在; - getset:
GETSET key value
;将给定 key 的值设为 value ,并返回 key 的旧值(old value); - mset:
MSET key value [key value ...]
;同时设置一个或多个 key-value 对; - mget:
MGET key [key ...]
;返回所有(一个或多个)给定 key 的值value; - msetnx:
MSETNX key value [key value ...]
;同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在才成功; - setex:
SETEX key seconds value
;将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位); - psetex:
PSETEX key milliseconds value
;这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位;
2.2 获取与追加的功能
strlen append setrange getrange
- strlen:
STRLEN key
;返回 key 所储存的字符串值的长度; - append:
APPEND key value
;如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾; - setrange:
SETRANGE key offset value
;用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始; - getrange:
GETRANGE key [start] [end]
;返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)(负数偏移量表示从字符串最后开始计数, -1 表示最后一个字符);
2.3 数字与浮点数的操作功能
incrby incr incrbyfloat decrby decr
- incrby:
INCRBY key increment
;将 key 所储存的整数值加上增量 increment; - incr:
INCR key
;将 key 中储存的数字值增 1; - incrbyfloat:
INCRBYFLOAT key increment
;为 key 中所储存的值加上浮点数增量 increment; - decrby:
DECRBY key decrement
;将 key 所储存的值减去减量 decrement; - decr:
DECR key
;将 key 中储存的数字值减 1;
2.4 二进制位操作的功能
setbit getbit bitcount bitop
- setbit:
SETBIT key offset value
;对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit); - getbit:
GETBIT key offset
;对 key 所储存的字符串值,获取指定偏移量上的位(bit); - bitcount:
BITCOUNT key [start] [end]
;计算给定字符串中,被设置为 1 的比特位的数量; - bitop:
BITOP operation destkey key [key ...]
;对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上(operation 可以是 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种);
3. List(列表)
key为键值对的键;value为键值对的值;[]为可省内容,这里表示一个或多个;timeout为数字,表示超时时间;index为数字,表示下标;pivot为某个值;start和stop为区间的下标;count为数字,表示计数器;source和destination为两个链表的key,前者表示来源,后者表示目的;
3.1 添加与修改元素的功能
rpush rpushx lpush lpushx linsert lset
- rpush:
RPUSH key value [value ...]
;将一个或多个值 value 插入到列表 key 的表尾(最右边),当 key 不存在时,会创建空列表并执行 LPUSH 操作; - rpushx:
RPUSHX key value
;将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表时操作成功; - lpush:
LPUSH key value [value ...]
;将一个或多个值 value 插入到列表 key 的表头(最左边)。当 key 不存在时,会创建空列表并执行 LPUSH 操作; - lpushx:
LPUSHX key value
;将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表时操作成功; - linsert ... before|after:
LINSERT key BEFORE|AFTER pivot value
;将值 value 插入到列表 key 当中,位于值 pivot 之前或之后; - lset:
LSET key index value
;将列表 key 下标为 index 的元素的值设置为 value;
3.2 移除元素的功能
lpop blpop rpop brpop lrem
- lpop:
LPOP key
;移除并返回列表 key 的头元素; - blpop:
BLPOP key [key ...] timeout
;列表的阻塞式(blocking)弹出原语。当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的头元素; - rpop:
RPOP key
;移除并返回列表 key 的尾元素; - brpop:
BRPOP key [key ...] timeout
;列表的阻塞式(blocking)弹出原语。当给定多个 key 参数时,按参数 key 的先后顺序依次检查各个列表,弹出第一个非空列表的尾部元素; - lrem:
LREM key count value
;根据参数 count 的值,移除列表中与参数 value 相等的元素;- count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count;
- count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值;
- count = 0 : 移除表中所有与 value 相等的值;
3.3 列表与元素的获取功能
llen lingex lrange
- llen:
LLEN key
;返回列表 key 的长度; - lingex:
LINDEX key index
;返回列表 key 中,下标为 index 的元素; - lrange:
LRANGE key start stop
;返回列表 key 中指定区间 [start, stop] 内的元素;
3.4 列表的操作功能
ltrim rpoplpush brpoplpush
- ltrim:
LTRIM key start stop
;对一个列表进行修剪(trim),保留区间 [start, stop] 内的元素; - rpoplpush:
RPOPLPUSH source destination
;在一个原子时间内,执行以下两个动作:- 将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端;
- 将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素;
- brpoplpush:
BRPOPLPUSH source destination timeout
;是 RPOPLPUSH 的阻塞版本;- 当给定列表 source 不为空时, BRPOPLPUSH 的表现和 RPOPLPUSH 一样;
- 当列表 source 为空时, BRPOPLPUSH 命令将阻塞连接,直到等待超时,或有另一个客户端对 source 执行 LPUSH 或 RPUSH 命令为止;
4. Hash(哈希表)
key为哈希表;field为键值对的键,也称域;value为键值对的值;increment为数字,表示增量;
4.1 添加和修改键值对的功能
hset mhset hsetnx hincrby hincrbyfloat
- hset:
HSET key field value
;将哈希表 key 中的域 field 的值设为 value; - mhset:
HMSET key field value [field value ...]
;同时将多个 field-value (域-值)对设置到哈希表 key 中; - hsetnx:
HSETNX key field value
;将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。若域 field 已经存在,该操作无效; - hincrby:
HINCRBY key field increment
;为哈希表 key 中的域 field 的值加上整数增量 increment; - hincrbyfloat:
HINCRBYFLOAT key field increment
;为哈希表 key 中的域 field 加上浮点数增量 increment;
4.2 移除键值对的功能
hdel
- hdel:
HDEL key field [field ...]
;删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略;
4.3 键值对的获取功能
hkeys hvals hgetall hexists hget hmget hlen
- hkeys:
HKEYS key
;返回哈希表 key 中的所有域 field; - hvals:
HVALS key
;返回哈希表 key 中所有域的值 value; - hgetall:
HGETALL key
;返回哈希表 key 中,所有的域 field 和值 value; - hexists:
HEXISTS key field
;查看哈希表 key 中,给定域 field 是否存在; - hget:
HGET key field
;返回哈希表 key 中给定域 field 的值; - hmget:
HMGET key field [field ...]
;返回哈希表 key 中,一个或多个给定域的值; - hlen:
HLEN key
;返回哈希表 key 中域的数量;
4.4 哈希表的迭代遍历功能
hscan
- hscan:
HSCAN key cursor [MATCH pattern] [COUNT count]
;参考《键的迭代遍历功能 scan》;
5. Set(集合)
key为集合的键;member为元素;[]为可省内容,这里表示一个或多个;source为源头集合;destination为目标集合;count为数字;
5.1 添加和修改元素的功能
sadd
- sadd:
SADD key member [member ...]
;将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略;
5.2 移除元素的功能
spop srem
- spop:
SPOP key
;移除并返回集合中的一个随机元素; - srem:
SREM key member [member ...]
;移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略;
5.3 元素的获取功能
smembers sismember srandmember
- smembers:
SMEMBERS key
;返回集合 key 中的所有成员; - sismember:
SISMEMBER key member
;判断集合 key 是否包含 member 元素; - srandmember:
SRANDMEMBER key [count]
;如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素;- 如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合;
- 如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值;
5.4 集合的获取功能
scard sdiff sdiffstore sinter sinterstore sunion sunionstore
- scard:
SCARD key
;返回集合 key 中元素的数量; - sdiff:
SDIFF key [key ...]
;返回一个集合的全部成员,该集合是所有给定集合之间的差集; - sdiffstore:
SDIFFSTORE destination key [key ...]
;这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集; - sinter:
SINTER key [key ...]
;返回一个集合的全部成员,该集合是所有给定集合的交集; - sinterstore:
SINTERSTORE destination key [key ...]
;这个命令类似于 SINTER 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集; - sunion:
SUNION key [key ...]
;返回一个集合的全部成员,该集合是所有给定集合的并集; - sunionstore:
SUNIONSTORE destination key [key ...]
;这个命令类似于 SUNION 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集;
5.5 集合的操作功能
smove
- smove:
SMOVE source destination member
;将 member 元素从 source 集合移动到 destination 集合;
5.6 集合的迭代遍历功能
sscan
- sscan:
SSCAN key cursor [MATCH pattern] [COUNT count]
;参考《键的迭代遍历功能 scan》;
6. SortedSet(有序集合)
key为键值对的键;member为元素;score为分数权重值;[]为可省内容,这里表示一个或多个;destination为目标集合;count为数字;min和max表示浮点数范围区间;start和stop为区间的下标;
6.1 添加和修改元素的功能
zadd zincrby
- zadd:
ZADD key score member [[score member] [score member] ...]
;将一个或多个 member 元素及其 score 值加入到有序集 key 当中; - zincrby:
ZINCRBY key increment member
;为有序集 key 的成员 member 的 score 值加上增量 increment ;
6.2 移除元素的功能
zrem zremrangebyrank zremrangebyscore
- zrem:
ZREM key member [member ...]
;移除有序集 key 中的一个或多个成员,不存在的成员将被忽略; - zremrangebyrank:
ZREMRANGEBYRANK key start stop
;移除有序集 key 中,指定下标排名(rank)区间 [start, stop] 内的所有成员; - zremrangebyscore:
ZREMRANGEBYSCORE key min max
;移除有序集 key 中,所有 score 值介于 [min, max] 之间;
6.3 元素的获取功能
zrange zrevrange zrangebyscore zrevrangebyscore zrank zrevrank zscore
- zrange:
ZRANGE key start stop [WITHSCORES]
;返回有序集 key 中,指定下标区间 [start, stop] 内的元素。其中成员的位置按 score 值递增(从小到大)来排序; - zrevrange:
ZREVRANGE key start stop [WITHSCORES]
;返回有序集 key 中,指定区间 [start, stop] 内的元素。其中成员的位置按 score 值递减(从大到小)来排列; - zrangebyscore:
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
;返回有序集 key 中,所有 score 值介于 [min, max] 之间的成员有序集成员按 score 值递增(从小到大)次序排列;- WITHSCORES 参数决定结果集是单单返回有序集的成员,还是将有序集成员及其 score 值一起返回;
- 可以使用
(min
或(max
来指定开区间;
- zrangebyscore ... -inf +inf:
ZRANGEBYSCORE key -inf +inf
;显示整个有序集;- 相当于min取负无穷,max取正无穷,inf可以在不知道有序集的最低和最高 score 值的情况下,使用 ZRANGEBYSCORE 这类命令;
- zrevrangebyscore:
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]
;返回有序集 key 中, score 值介于 [min, max] 之间的所有的成员。有序集成员按 score 值递减(从大到小)的次序排列;- 其他类似同上;
- zrank:
ZRANK key member
;返回有序集 key 中元素的排名 rank。其中有序集成员按 score 值递增(从小到大)顺序排列; - zrevrank:
ZREVRANK key member
;返回有序集 key 中元素的排名 rank。其中有序集成员按 score 值递减(从大到小)排序; - zscore:
ZSCORE key member
;返回有序集 key 中,成员 member 的 score 值;
6.4 集合的获取功能
zcard zcount zunionstore zinterstore
- zcard:
ZCARD key
;返回集合 key 中元素的数量; - zcount:
ZCOUNT key min max
;返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量; - zunionstore:
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
;计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。- 默认情况下,结果集中某个成员的 score 值是所有给定集下该成员 score 值之和;
- WEIGHTS表示乘法因子,默认为1,并集后的元素的分值 score 为 score*weight;
- AGGREGATE可以指定并集的结果集的聚合方式;
- zinterstore:
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
;计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination ;- 类似性质同上;
6.5 集合的迭代遍历功能
zscan
- zscan:
ZSCAN key cursor [MATCH pattern] [COUNT count]
;参考《键的迭代遍历功能 scan》;
7. Pub/Sub(发布/订阅)
channel表示频道名;pattern为一个通配符,表示模式名;message表示消息;
7.1 频道的订阅与退订
subscribe unsubscribe
- subscribe:
SUBSCRIBE channel [channel ...]
;订阅给定的一个或多个频道的信息; - subscribe:
SUBSCRIBE channel:message
;关注 “某个键执行了什么命令”,返回键空间通知; - subscribe:
SUBSCRIBE channel:del
;关注 “某个命令被什么键执行了”,返回键事件通知; - unsubscribe:
UNSUBSCRIBE [channel [channel ...]]
;退订给定的频道;
7.2 模式的订阅与退订
psubscribe punsubscribe
- psubscribe:
PSUBSCRIBE pattern [pattern ...]
;订阅一个或多个符合给定模式的频道。以 /* 作为匹配符; - punsubscribe:
PUNSUBSCRIBE [pattern [pattern ...]]
;退订所有给定模式;
7.3 发送消息
publish
- publish:
PUBLISH channel message
;信息 message 发送到指定的频道 channel ;
7.4 查看订阅信息
pubsub channels/numsub/bumpat
- pubsub channels:
PUBSUB CHANNELS [pattern]
;列出当前的活跃频道。给出 pattern 参数,那么只列出和给定模式 pattern 相匹配的那些活跃频道; - pubsub numsub:
PUBSUB NUMSUB [channel-1 ... channel-N]
;返回给定频道的订阅者数量, 订阅模式的客户端不计算在内。; - pubsub bumpat:
PUBSUB NUMPAT
;返回订阅模式的数量;
8. Transaction(事务)
key为键值对的键;
watch unwatch multi exec discard
- watch:
WATCH key [key ...]
;监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断; - unwatch:
UNWATCH
;取消 WATCH 命令对所有 key 的监视; - multi:
MULTI
;标记一个事务块的开始; - exec:
EXEC
;执行所有事务块内的命令。事务成功与否与 WATCH 命令相关; - discard:
DISCARD
;取消事务,放弃执行事务块内的所有命令;
9. Script(脚本)
sha1表示校验码;script表示脚本;numkeys为数字,表示参数个数; arg表示参数;
9.1 校验相关
eval evalsha
- eval:
EVAL script numkeys key [key ...] arg [arg ...]
;对 Lua 脚本进行求值; - evalsha:
EVALSHA sha1 numkeys key [key ...] arg [arg ...]
;根据给定的 sha1 校验码,对缓存在服务器中的脚本进行求值;
9.2 SCRIPT 命令
script exists/flush/kill/load
- script exists:
SCRIPT EXISTS script [script ...]
;给定一个或多个脚本的 SHA1 校验和,返回一个包含 0 和 1 的列表,表示校验和所指定的脚本是否已经被保存在缓存当中; - script flush:
SCRIPT FLUSH
;清除所有 Lua 脚本缓存; - script kill:
SCRIPT KILL
;杀死当前正在运行的 Lua 脚本,当且仅当这个脚本没有执行过任何写操作时,这个命令才生效; - script load:
SCRIPT LOAD
;将脚本 script 添加到脚本缓存中,但并不立即执行这个脚本;
10. Connection(连接)
password表示密码;message表示信息;index为数字,表示下标;
select ping quit auth echo
- select:
SELECT index
;切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值; - ping:
PING
;使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG。通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值; - quit:
QUIT
;请求服务器关闭与当前客户端的连接; - auth:
AUTH password
;键入密码。通过设置配置文件中 requirepass 项的值(使用命令 CONFIG SET requirepass password ),可以使用密码来保护 Redis 服务器; - echo:
ECHO message
;打印一个特定的信息 message ,测试时使用;
11. Server(服务器)
section为可选参数;connection-name为字符串,表示当前连接的名字;ip表示IP地址;port表示端口号;parameter表示配置;value表示配置的参数;argument表示参数;
11.1 服务器的获取功能
dbsize time lastsave monitor
- dbsize:
DBSIZE
;返回当前数据库的 key 的数量; - time:
TIME
;返回当前服务器时间; - lastsave:
LASTSAVE
;返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示; - monitor:
MONITOR
;实时打印出 Redis 服务器接收到的命令,调试用;
11.2 服务器的操作的功能
flushdb flushall shutdown salveof
- flushdb:
FLUSHDB
;清空当前数据库中的所有 key; - flushall:
FLUSHALL
;清空整个 Redis 服务器的数据(删除所有数据库的所有 key)。此命令从不失败; - shutdown:
SHUTDOWN
;停止所有客户端;如果有至少一个保存点在等待,执行 SAVE 命令;如果 AOF 选项被打开,更新 AOF 文件;关闭 redis 服务器; - slaveof:
SLAVEOF ip port
;在 Redis 运行时动态地修改复制(replication)功能的行为。可以将当前服务器转变为指定服务器的从属服务器; - slaveof no one:
SLAVEOF NO ONE
;使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃; - sync:
SYNC
;用于复制功能(replication)的内部命令; - psync:
PSYNC <MASTER_RUN_ID> <OFFSET>
;用于复制功能(replication)的内部命令;
11.3 服务器持久化相关
save bgsave bgrewriteaof
- save:
SAVE
;执行一个同步保存操作,将当前 Redis 实例的所有数据快照以 RDB 文件的形式保存到硬盘; - bgsave:
BGSAVE
;在后台异步(Asynchronously)保存当前数据库的数据到磁盘; - bgrewriteaof:
BGREWRITEAOF
;AOF 文件后台重写;
11.4 客户端相关操作
client list/setname/getname/kill
- client list:
CLIENT LIST
;以易读的格式,返回所有连接到服务器的客户端信息和统计数据; - client setname:
CLIENT SETNAME connection-name
;为当前连接分配一个名字; - client getname:
CLIENT GETNAME
;返回 CLIENT SETNAME 命令为连接设置的名字; - client kill:
CLIENT KILL ip:port
;关闭地址为 ip:port 的客户端;
11.5 服务器的配置参数相关
config set/get/rewrite/resetstat
- config set:
CONFIG SET parameter value
;动态地调整 Redis 服务器的配置(configuration)而无须重启; - config get:
CONFIG GET parameter
;取得运行中的 Redis 服务器的配置参数(; - config rewrite:
CONFIG REWRITE
;对启动 Redis 服务器时所指定的 redis.conf 文件进行改写。通过尽可能少的修改, 将服务器当前所使用的配置记录到 redis.conf 文件中; - config resetstat:
CONFIG RESETSTAT
;重置 INFO 命令中的某些统计数据;
11.6 Slow log 慢查询日志相关
slowlog get/len/reset
- slowlog:
SLOWLOG subcommand [argument]
;用来记录查询执行时间的日志系统; - slowlog:
SLOWLOG GET [number]
;打印所有 slow log ,最大长度取决于 slowlog-max-len 选项的值; - slowlog:
SLOWLOG GET number
;打印指定数量的日志; - slowlog:
SLOWLOG LEN
;查看当前日志的数量; - reset:
SLOWLOG RESET
;清除所有慢查询日志;
11.7 获取Redis服务器的各种信息和统计数值
info
- info:
INFO [section]
;以一种易于解释(parse)且易于阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。可选参数section
如下:server
: 一般 Redis 服务器信息,包含以下域:- redis_version : Redis 服务器版本;
- redis_git_sha1 : Git SHA1;
- redis_git_dirty : Git dirty flag;
- os : Redis 服务器的宿主操作系统;
- arch_bits : 架构(32 或 64 位);
- multiplexing_api : Redis 所使用的事件处理机制;
- gcc_version : 编译 Redis 时所使用的 GCC 版本;
- process_id : 服务器进程的 PID;
- run_id : Redis 服务器的随机标识符(用于 Sentinel 和集群);
- tcp_port : TCP/IP 监听端口;
- uptime_in_seconds : 自 Redis 服务器启动以来,经过的秒数;
- uptime_in_days : 自 Redis 服务器启动以来,经过的天数;
- lru_clock : 以分钟为单位进行自增的时钟,用于 LRU 管理;
clients
: 已连接客户端信息,包含以下域:- connected_clients : 已连接客户端的数量(不包括通过从属服务器连接的客户端);
- client_longest_output_list : 当前连接的客户端当中,最长的输出列表;
- client_longest_input_buf : 当前连接的客户端当中,最大输入缓存;
- blocked_clients : 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量
memory
: 内存信息,包含以下域:- used_memory : 由 Redis 分配器分配的内存总量,以字节(byte)为单位;
- used_memory_human : 以人类可读的格式返回 Redis 分配的内存总量;
- used_memory_rss : 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致;
- used_memory_peak : Redis 的内存消耗峰值(以字节为单位);
- used_memory_peak_human : 以人类可读的格式返回 Redis 的内存消耗峰值;
- used_memory_lua : Lua 引擎所使用的内存大小(以字节为单位);
- mem_fragmentation_ratio : used_memory_rss 和 used_memory 之间的比率;
- mem_allocator : 在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc;
persistence
: RDB 和 AOF 的相关信息;stats
: 一般统计信息;replication
: 主/从复制信息;cpu
: CPU 计算量统计信息;commandstats
: Redis 命令统计信息;cluster
: Redis 集群信息;keyspace
: 数据库相关的统计信息;all
: 返回所有信息;default
: 返回默认选择的信息;