String
-
SET key value [EX seconds] [PX milliseconds] [XX|NX]
为字符串键设置值, O(1) -
GET key
获取字符串键的值, O(1) -
GETSET
获取旧值并设置新值, O(1) -
MSET key value [key value ...]
一次为多个字符串键设置值, O(N), N 为用户指定的字符串键数量 -
MGET key [key ...]
一次获取多个字符串键的值, O(N), N 为用户指定的字符串键数量 -
MSET key value [key value ...]
只有键不存在的情况下,一次为多个字符串键设置值, O(N), N 为用户指定的字符串键数量 -
STRLEN key
获取字符串值的字节长度, O(1) -
GETRANGE key start end
获取字符串值指定索引范围上的内容, O(N), N 为被返回内容的长度 -
SETRANGE key index substitute
对字符串值的指定索引范围进行设置, O(N), N 为被修改内容的长度 -
APPEND key suffix
追加新内容到值的末尾, O(N), N 为新追加内容的长度 -
INCRBY key increment
DECRBY key increment
对整数值执行加法操作和减法操作, O(1) -
INCR key
DECR key
对整数值执行加 1 操作和减 1 操作, O(1) -
INCRBYFLOAT key increment
对整数值执行浮点数加法操作, O(1) -
缓存, 锁, ID 生成器, 计数器, 限速器
Hash
-
HSET hash field value
为字段设置值, O(1) -
HSETNX hash field value
只有字段不存在的情况下为它设置值, O(1) -
HGET hash field
获取字段的值, O(1) -
HINCRBY hash field increment
对字段存储的整数执行加法或减法操作, O(1) -
HINCRBYFLOAT hash field increment
对字段存储的数字值执行浮点数加法或减法操作, O(1) -
HSTRLEN hash field
获取字段值的字节长度, O(1) -
HEXISTS hash field
检查字段是否存在, O(1) -
HDEL hash field
删除字段, O(1) -
HLEN hash
获取散列包含的字段数量, O(1) -
HMSET hash field value [field value ...]
一次为多个字段设置值, O(N), N 为被设置的字段数量 -
HMGET hash field [field ...]
一次获取多个字段的值, O(N), N 为用户给定的字段数量 -
HKEYS hash
HVALS hash
HGETALL hash
获取所有字段, 所有值, 所有字段和值, O(N), N 为散列包含的字段数量 -
HSCAN hash cursor [MATCH pattern] [COUNT number]
以渐进的方式迭代给定散列包含的键值对, O(N), N 为被迭代元素的数量 -
短网址, 用户登录会话, 存储图数据
List
-
LPUSH list item [item ...]
将元素推入列表左端, O(N), N 为被推入列表的元素数量 -
RPUSH list item [item ...]
将元素推入列表右端, O(N), N 为被推入列表的元素数量 -
LPUSHX list item
RPUSHX list item
只对已存在的列表执行推入操作, O(1) -
LPOP list
弹出列表最左端的元素, O(1) -
RPOP list
弹出列表最右端的元素, O(1) -
RPOPLPUSH source target
将右端弹出的元素推入左端, O(1) -
LLEN list
获取列表的长度, O(1) -
LINDEX list index
获取指定索引上的元素, O(N), N 为给定列表的长度 -
LRANGE list start end
获取指定索引范围上的元素, O(N), N 为给定列表的长度 -
LSET list index new_element
为指定索引设置新元素, O(N), N 为给定列表的长度 -
LINSERT list BEFORE|AFTER target_element new_element
将元素插入列表, O(N), N 为给定列表的长度 -
LTRIM list start end
修建列表, O(N), N 为给定列表的长度 -
LREM list count element
从列表中移除指定元素, O(N), N 为给定列表的长度 -
BLPOP list [list ...] timeout
阻塞式左端弹出操作, O(N), N 为用户给定的列表数量 -
BRPOP list [list ...] timeout
阻塞式右端弹出操作, O(N), N 为用户给定的列表数量 -
BRPOPLPUSH source target timeout
阻塞式弹出并推入操作, O(1) -
消息队列, 分页, 待办事项列表
Set
-
SADD set element [element ...]
将元素添加到集合, O(N), N 为用户给定的元素数量 -
SREM set element [element ...]
从集合中移除元素, O(N), N 为用户给定的元素数量 -
SMOVE source target element
将元素从一个集合移动到另一个集合, O(1) -
SMEMBERS set
获取集合包含的所有元素, O(N), N 为集合包含的元素数量 -
SCARD set
获取集合包含的元素数量, O(1) -
SISMEMBER set element
检查给定元素是否存在于集合, O(1) -
SRANDMEMBER set [count]
随机获取集合中的元素, O(N), N 为被返回的元素数量 -
SPOP key [count]
随机地从集合中移除指定数量的元素, O(N), N 为被移除的元素数量 -
SINTERSTORE [destination_key] set [set ...]
对集合执行交集计算, O(N*M), N 为给定集合的数量, M 为给定集合中, 包含元素最少的那个集合的大小 -
SUNION [destination_key] set [set ...]
对集合执行并集计算, O(N), N 为所有给定集合包含的元素数量总和 -
SIDFF [destination_key] set [set ...]
对集合执行差集计算, O(N), N 为所有给定集合包含的元素数量总和 -
SSCAN hash cursor [MATCH pattern] [COUNT number]
以渐进的方式迭代给定集合包含的元素, O(N), N 为被迭代元素的数量 -
唯一计数器, 打标签, 点赞, 投票, 社交关系, 抽奖, 共同关注与推荐关注, 商品筛选器
Sorter Set
-
ZADD sorted_set [XX|NX] [CH] score member [score member ...]
添加或更新成员, O(M*log(N)), M 为给定成员的数量, N 为有序集合包含的成员数量 -
ZREM sorted_set member [member ...]
移除指定的成员, O(M*log(N)), M 为给定成员的数量, N 为有序集合包含的成员数量 -
ZSCORE sorted_set member
获取成员的分值, O(1) -
ZINCRBY sorted_set increment member
对成员的分值执行自增或自减操作, O(log(N)), N 为有序集合包含的成员数量 -
ZCARD sorted_set
获取有序集合的大小, O(1) -
Z[REV]RANK sorted_set member
获取成员在有序集合中的排名, O(log(N)), N 为有序集合包含的成员数量 -
Z[REV]RANGE sorted_set start end [WITHSCORES]
获取指定索引范围内的成员, O(log(N) + M), N 为有序集合包含的成员数量, M 为命令返回的成员数量 -
Z[REV]RANGEBYSCORE sorted_set max min [WITHSCORES] [LIMIT offset count]
获取指定分值范围内的成员, O(log(N) + M), N 为有序集合包含的成员数量, M 为命令返回的成员数量 -
ZCOUNT sorted_set min max
统计指定分值范围内的成员数量, O(log(N)), N 为有序集合包含的成员数量 -
ZREMRANGEBYRANK sorted_set start end
移除指定排名范围内的成员, O(log(N) + M), N 为有序集合包含的成员数量, M 为被移除的成员数量 -
ZREMRANGEBYSCORE sorted_set min max
移除指定分值范围内的成员, O(log(N) + M), N 为有序集合包含的成员数量, M 为被移除的成员数量 -
ZUNIONSTORE destination numbers sorted_set [sorted_set ...] [AGGRECATE SUM|MIN|MAX] [WEIGHTS weight [weight ...]]
有序集合的并集运算, O(N*log(N)), N 为给定的有序集合的成员总数量 -
ZINTERSTORE destination numbers sorted_set [sorted_set ...] [AGGRECATE SUM|MIN|MAX] [WEIGHTS weight [weight ...]]
有序集合的交集运算, O(N*log(N)*M), N 为所有给定的有序集合中,基数最小的那个有序集合的基数,M 为给定有序集合的数量 -
Z[REV]RANGEBYLEX sorted_set min max [LIMIT offset count]
返回指定字典序范围内的成员, O(log(N) + M), N 为有序集合包含的元素数量, M 为命令返回的成员数量 -
ZLEXCOUNT sorted_set min max
统计位于字典序指定范围内的成员数量, O(log(N)), N 为有序集合中包含的成员数量 -
ZREMRANGEBYLEX sorted_set min max
移除位于字典序指定范围内的成员, O(log(N) + M), N 为有序集合包含的元素数量, M 为被移除的成员数量 -
ZPOP[MAX|MIN] sorted_set [count]
弹出分值最高和最低的成员, O(N), N 为命令移除的元素数量 -
BZPOP[MAX|MIN] sorted_set [sorted_set ...] timeout
阻塞式弹出分值最高和最低的成员, O(N), N 为命令移除的元素数量 -
ZSCAN hash cursor [MATCH pattern] [COUNT number]
以渐进的方式迭代给定有序集合包含的成员和分值, O(N), N 为被迭代元素的数量 -
排行榜, 时间线, 商品推荐, 自动补全
HyperLogLog
-
PFADD hyperloglog element [element ...]
对集合元素进行计数, O(N), N 为用户给定的元素数量 -
PFCOUNT hyperloglog [hyperloglog ...]
返回集合的近似基数, O(N), N 为用户给定的 HyperLogLog 数量 -
PFMERGE destination hyperloglog [hyperloglog ...]
计算多个 HyperLogLog 的并集, O(N), N 为用户给定的 HyperLogLog 数量 -
唯一计数器, 检测重复信息, 每周/月度/年度计数器
Bitmap
-
SETBIT bitmap offset value
设置二进制位的值, O(1) -
GETBIT bitmap offset
获取二进制位的值, O(1) -
BITCOUNT key [start end]
统计被设置的二进制位数量, O(N), N 为被统计字节的数量 -
BITPOS bitmap value [start end]
查找第一个指定的二进制位值, O(N), N 为查找涉及的字节数量 -
BITOP [AND|OR|XOR|NOT] result_key bitmap [bitmap ...]
执行二进制位运算, O(N), N 为查找涉及的字节总数量 -
BITFIELD bitmap [SET|GET|INCRBY|OVERFLOW]
在位图中存储整数值, O(N), N 为用户给定的子命令数量 -
用户行为记录器, 0-1 矩阵, 紧凑计数器
GEO
-
GEOADD location_set longitude latitude name [longitude latitude name ...]
存储坐标, O(log(N) * M), N 为位置集合目前包含的位置数量, M 为用户给定的位置数量 -
GEOPOS location_set name [name ...]
获取指定位置的坐标, O(log(N) * M), N 为位置集合目前包含的位置数量, M 为用户给定的位置数量 -
GEODIST location_set name1 name2 [m|km|mi|ft]
计算两个位置之间的直线距离, O(log(N)), N 为位置集合目前包含的位置数量 -
GEORADIUS location_set longitude latitude redius unit [WITHHASH] [WITHDIST] [WITHCOORD] [ASC|DESC] [COUNT n]
查找指定坐标半径范围内的其他位置, O(N), N 为命令实施范围查找时检查的位置数量 -
GEORADIUSBYMEMBER location_set name radius unit [WITHHASH] [WITHDIST] [WITHCOORD] [ASC|DESC] [COUNT n]
查找指定位置半径范围内的其他位置, O(N), N 为命令实施范围查找时检查的位置数量 -
GEOHASH location_set name [name ...]
获取指定位置的 Geohash 值, O(N), N 为用户给定的位置数量 -
用户地理位置, 查找附近用户
Stream
-
XADD stream [MAXLEN len] id field value [field value ...]
追加新元素到流的末尾, O(log(N)), N 为流目前包含的元素数量 -
XTRIM stream MAXLEN len
对流进行修剪, O(log(N) + M), N 为执行修剪操作前流包含的元素数量, M 为被移除元素的数量 -
XDEL stream [id id ... id]
移除指定元素, O(log(N) + M), N 为流包含的元素数量, M 为被移除元素的数量 -
XLEN strem
获取流包含的元素数量, O(1) -
X[REV]RANGE stream start-id end-id [COUNT n]
访问流中的元素, O(log(N) + M), N 为流包含的元素数量, M 为命令返回的元素数量 -
XREAD [BLOCK ms] [COUNT n] STREAMS stream1 stream2 ... id1 id2 ...
以阻塞或非阻塞方式获取流元素, O((log(N) + M) * I), 获取单个流的复杂度为O(log(N) + M), I 为流的数量 -
XGROUP CREATE stream group start_id
创建消费者组, O(1) -
XGROUP SETID stream group id
修改消费者组的最后递送消息 ID, O(1) -
XGROUP DELCONSUMER stream group consumer
删除消费者, O(N), N 为被删除消费者正在处理的消息数量 -
XGROUP DESTROY stream group
删除消费者组, O(N + M), N 为消费者组被删除是, 仍处理'待处理'状态的消息数量, M 为该组属下消费者的数量 -
XREADGROUP GROUP group consumer [COUNT n] [BLOCK ms] STREAMS stream [stream ...] id [id ...]
读取消费者组, O((log(N) + M) * I), 获取单个流的复杂度为O(log(N) + M), I 为流的数量 -
XACK stream group id [id id ...]
消费者确认消息, O(N), N 为用户给定的消息 ID 数量 -
XPENDING stream group [start stop count] [consumer]
显示待处理消息的相关信息, O(log(N) + M), N 为消费者组目前待处理的消息数量, M 为命令返回的消息数量 -
XCLAIM stream group new_consumer max_pending_time id [id id ...]
转移消息的归属权, O(N), N 为用户给定的消息 ID 数量 -
XINFO CONSUMERS stream group-name
查看流和消费者组的相关信息, O(N), N 为消费者组的消费者数量 -
消息队列,
DataBase
-
SELECT db
切换至指定的数据库, O(1) -
KEYS pattern
获取所有与给定匹配符相匹配的键, O(N), N 为数据库包含的键数量 -
SCAN cursor [MATCH pattern] [COUNT number]
迭代与给定匹配符相匹配的键, O(N), N 为被迭代元素的数量 -
RANDOMKEY
随机返回一个键, O(1) -
SORT key [ASC|DESC] [ALPHA] [LIMIT offset count] [[GET pattern] [GET pattern] ...] [STORE destination]
对键的值进行排序, O(N * log(N) + M), N 为被排序元素的数量, M 为命令返回的元素数量 -
EXISTS key [key ...]
检查给定键是否存在, O(N), N 为用户给定的键数量 -
DBSIZE
获取数据库包含的键值对数量, O(1) -
TYPE key
查看键的类型, O(1) -
RENAME[NX] origin new
修改键名, O(1) -
MOVE key db
将给定的键移动到另一个数据库, O(1) -
DEL key [key ...]
移除指定的键, O(N), N 为被移除的数量 -
UNLINK key [key ...]
异步方式移除指定的键, O(N), N 为被移除的数量 -
FLUSHDB [async]
清空当前数据库, O(N), N 为被清空数据库包含的键值对数量 -
FLUSHALL [async]
清空所有数据库, O(N), N 为被清空的所有数据库包含的键值对数量 -
SWAPDB x y
互换数据库, O(1) -
在线替换数据库
Expire
-
[P]EXPIRE key seconds|milliseconds
设置生存时间, O(1) -
[P]EXPIREAT key seconds_timestamp|milliseconds_timestamp
设置过期时间, O(1) -
[P]TTL key
获取键的剩余生存时间, O(1) -
自动过期的登陆会话, 自动淘汰冷门数据
Transaction
-
MULTI
开启事务, O(1) -
EXEC
执行事务, 复杂度为事务包含的所有命令的复杂度之和 -
DISCARD
放弃事务, O(N), N 为事务队列包含的命令数量 -
WATCH key [key ...]
对键进行监视, O(N), N 为被监视键的数量 -
UNWATCH
取消对键的监视, O(N), N 为被取消监视的键数量
Lua Script
-
EVAL script numkeys key [key ...] arg [arg ...]
执行脚本 -
SCRIPT LOAD script
缓存脚本 -
EVALSHA sha1 numkeys key [key ...] arg [arg ...]
执行已被缓存的脚本 -
SCRIPT EXISTS sha1 [sha1 ...]
检查脚本是否已被缓存 -
SCRIPT FLUSH
移除所有已缓存脚本 -
SCRIPT KILL
强制停止正在运行的脚本
Persistence
-
SAVE
阻塞服务器并创建 RDB 文件, O(N), N 为服务器所有数据库包含的键值对总数量 -
BGSAVE
非阻塞方式创建 RDB 文件, O(N), N 为服务器所有数据库包含的键值对总数量 -
BGREWRITEAOF
触发 AOF 重写操作, O(N), N 为服务器所有数据库包含的键值对总数量 -
SHUTDOWN [save|nosave]
关闭服务器
Pub / Sub
-
PUBLISH channel message
向频道发送消息, O(N+M), N 为给定频道的订阅者数量, M 为服务器目前被订阅的模式总数量 -
SUBSCRIBE channel [channel ...]
订阅频道, O(N), N 为用户输入的频道数量 -
UNSUBSCRIBE channel [channel ...]
退订频道, O(N), N 为用户输入的频道数量 -
PSUBSCRIBE pattern [pattern ...]
订阅模式, O(N), N 为用户输入的模式数量 -
PUNSUBSCRIBE pattern [pattern ...]
退订模式, O(N*M), N 为用户给定的模式数量, M 为服务器目前被订阅的模式总数量 -
PUBSUB CHANNELS [pattern]
查看被订阅的频道, O(N), N 为服务器目前被订阅的频道总数量 -
PUBSUB NUMSUB [channel channel ...]
查看频道的订阅者数量, O(N), N 为用户给定的频道数量 -
PUBSUB NUMPAT
查看被订阅模式的总数量, O(1) -
广播系统
Module
-
ReJson
-
RediSQL
-
RediSearch
Replication
-
REPLICAOF host port
将服务器设置为从服务器 -
REPLICAOF no one
取消复制 -
ROLE
查看服务器的角色
Sentinel
-
SENTINEL masters
获取所有被监视主服务器的信息 -
SENTINEL master <master-name>
获取指定被监视主服务器的信息 -
SENTINEL slaves <master-name>
获取被监视主服务器的从服务器信息 -
SENTINEL sentinels <master-name>
获取其他 Sentinel 的相关信息 -
SENTINEL get-master-addr-by-name <master-name>
获取给定主服务器的 IP 地址和端口号 -
SENTINEL reset <pattern>
重置主服务器状态 -
SENTINEL failover <master-name>
强制执行故障转移 -
SENTINEL ckquorum <master-name>
检查可用 Sentinel 的数量 -
SENTINEL flushconfig
强制写入配置文件 -
SENTINEL monitor <master-name> <ip> <port> <quorum>
监视给定主服务器 -
SENTINEL remove <masters-name>
取消对给定主服务器的监视 -
SENTINEL set <master-name> <option> <value>
修改 Sentinel 配置选项的值
Cluster
-
CLUSTER MEET ip port
将节点添加至集群 -
CLUSTER NODES
查看集群内所有节点的相关信息 -
CLUSTER MYID
查看当前节点的运行 ID -
CLUSTER INFO
查看集群信息 -
CLUSTER FORGET node-id
从集群中移除节点 -
CLUSTER REPLICATE master-id
将节点变为从节点 -
CLUSTER REPLICAS node-id
查看给定节点的所有从节点 -
CLUSTER FAILOVER [FORCE|TAKEOVER]
强制执行故障转移 -
CLUSTER RESET [SOFT|HARD]
重置节点 -
CLUSTER SLOTS
查看槽与节点之间的关联信息 -
CLUSTER ADDSLOTS slot [slot ...]
把槽指派给节点 -
CLUSTER DELSLOTS slot [slot ...]
撤销对节点的槽指派 -
CLUSTER FLUSHSLOTS
撤销对节点的所有槽指派 -
CLUSTER KEYSLOT key
查看键所属的槽 -
CLUSTER COUNTKEYSINSLOT slot
查看槽包含的键数量 -
CLUSTER GETKEYSINSLOT slot count
获取槽包含的键
参考:《Redis使用手册》黄建宏 机械工业出版社 2019年9月版