Redis命令
1. 基本操作
| 命令 | 功能描述 |
|---|---|
redis-server |
启动 Redis 服务 |
redis-cli |
启动 Redis 命令行客户端(Redis CLI Client) |
telnet 127.0.0.1 6379 |
通过 telnet 连接 Redis 服务(默认地址 127.0.0.1,端口 6379) |
quit / exit |
退出 Redis 命令行客户端 |
2. 字符串(Strings)
| 命令 | 功能描述 | 时间复杂度 |
|---|---|---|
SET key value |
设置键 key 的值为 value | O(1) |
SETEX key seconds value |
设置键 key 的值为 value,并指定超时时间(单位:秒) | O(1) |
PSETEX key milliseconds value |
设置键 key 的值为 value,并指定超时时间(单位:毫秒) | O(1) |
SETNX key value |
仅当键 key 不存在时,才将其值设置为 value(不存在则设值) | O(1) |
GET key |
返回键 key 存储的值 | O(1) |
GETSET key value |
将键 key 的值设为 value,同时返回设置前的旧值;无旧值则返回 nil | O(1) |
APPEND key value |
若 key 存在且为字符串,将 value 追加到原字符串末尾;若 key 不存在,直接设值为 value | O(1) |
SETRANGE key offset value |
从偏移量 offset(从 0 开始)起,用 value 覆盖键 key 存储的原字符串 | O(1) |
GETRANGE key start end |
返回键 key 存储的字符串中,从 start 到 end(含两端)的子串 | O(N) |
INCR / DECR key |
将键 key 存储的数字值加 1 / 减 1;key 不存在则先初始化为 0 再运算 | O(1) |
INCRBY / DECRBY key increment/decrement |
将键 key 存储的数字值加 / 减指定量(increment/decrement);key 不存在则初始化为 0 | O(1) |
INCRBYFLOAT key increment |
将键 key 存储的浮点数值加指定增量(increment);key 不存在则初始化为 0 | O(1) |
MSET key value [key value ...] |
同时为多个键设置对应的值 | O(N) |
MGET key [key ...] |
同时返回多个给定键的值 | O(N) |
MSETNX key value [key value ...] |
仅当所有给定键都不存在时,才同时设值;有一个键存在则全部不设 | O(N) |
DEL key [key ...] |
删除一个或多个键的值 | O(1) |
STRLEN key |
获取键 key 对应值的字符串长度 | O(1) |
3. 列表(Lists)
| 命令 | 功能描述 | 时间复杂度 |
|---|---|---|
LPUSH key element [element ...] |
将一个或多个元素插入列表 key 的表头(左侧);key 不存在则创建列表 | O(1) |
LPUSHX key element [element ...] |
仅当 key 存在且为列表时,才将元素插入表头 | O(1) |
RPUSH key element [element ...] |
将一个或多个元素插入列表 key 的表尾(右侧);key 不存在则创建列表 | O(1) |
RPUSHX key element [element ...] |
仅当 key 存在且为列表时,才将元素插入表尾 | O(1) |
LPOP key [count] |
从列表 key 的表头移除并返回 1 个或 count 个元素;key 不存在则返回 nil | O(1) |
RPOP key [count] |
从列表 key 的表尾移除并返回 1 个或 count 个元素;key 不存在则返回 nil | O(1) |
RPOPLPUSH source destination |
原子操作:将 source 列表的表尾元素弹出,插入到 destination 列表的表头 | O(1) |
LREM key count element |
移除列表 key 中与 element 相等的 count 个元素,返回被移除的元素数量 | O(N) |
LLEN key |
返回列表 key 的长度;key 不存在则返回 0;非列表类型返回错误 | O(1) |
LINDEX key index |
返回列表 key 中索引为 index 的元素 | O(N) |
LINSERT key BEFORE|AFTER pivot element |
将 element 插入列表 key 中,位于 pivot 元素之前(BEFORE)或之后(AFTER) | O(N) |
LSET key index element |
将列表 key 中索引为 index 的元素设为 element | O(1) |
LRANGE key start stop |
返回列表 key 中,从 start 到 stop(含两端)的所有元素 | O(S+N) |
LTRIM key start stop |
仅保留列表 key 中,索引在 start 到 stop(含两端)之间的元素 | O(N) |
BLPOP key [key ...] timeout |
阻塞版 LPOP:列表无元素时阻塞,直到超时或有元素可弹出 | O(1) |
BRPOP key [key ...] timeout |
阻塞版 RPOP:列表无元素时阻塞,直到超时或有元素可弹出 | O(1) |
BRPOPLPUSH source destination timeout |
阻塞版 RPOPLPUSH:source 列表无元素时阻塞,直到超时或有元素 | O(1) |
4. 集合(Sets)
| 命令 | 功能描述 | 时间复杂度 |
|---|---|---|
SADD key member [member ...] |
将一个或多个元素加入集合 key;已存在的元素会被忽略 | O(N) |
SREM key member [member ...] |
从集合 key 中移除一个或多个元素;不存在的元素会被忽略 | O(N) |
SMEMBERS key |
返回集合 key 中的所有成员 | O(N) |
SISMEMBER key member |
判断 member 是否为集合 key 的成员;是返回 1,否或 key 不存在返回 0 | O(1) |
SPOP key [count] |
移除并返回集合 key 中的 1 个或 count 个随机元素 | O(1) |
SRANDMEMBER key [count] |
返回集合 key 中的 1 个或 count 个随机元素;仅返回不移除 | O(1) |
SMOVE source destination member |
原子操作:将 member 从 source 集合移动到 destination 集合 | O(1) |
SCARD key |
返回集合 key 的基数(元素数量) | O(1) |
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type] |
基于游标的增量迭代器,用于遍历集合元素;类似命令有 HSCAN、ZSCAN | O(1) |
SINTER key [key ...] |
返回一个或多个集合的交集(共同元素) | O(N*M) |
SINTERSTORE destination key [key ...] |
功能同 SINTER,但将交集结果存储到 destination 集合(覆盖已有) | O(N*M) |
SUNION key [key ...] |
返回一个或多个集合的并集(所有元素,去重) | O(N*M) |
SUNIONSTORE destination key [key ...] |
功能同 SUNION,但将并集结果存储到 destination 集合(覆盖已有) | O(N*M) |
SDIFF key [key ...] |
返回一个或多个集合的差集(前者有、后者无的元素) | O(N*M) |
SDIFFSTORE destination key [key ...] |
功能同 SDIFF,但将差集结果存储到 destination 集合(覆盖已有) | O(N*M) |
5. 有序集合(Sorted Sets)
| 命令 | 功能描述 | 时间复杂度 |
|---|---|---|
ZADD key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...] |
将一个或多个(score, member)对加入有序集合 key;支持 NX(不存在才加)等选项 | O(M*LogN) |
ZREM key member [member ...] |
从有序集合 key 中移除一个或多个成员;不存在的成员忽略 | O(N) |
ZSCORE key member |
返回有序集合 key 中 member 的分数(score) | O(1) |
ZINCRBY key increment member |
为有序集合 key 中 member 的分数加增量 increment | O(LogN) |
ZCARD key |
返回有序集合 key 的基数(成员数量) | O(1) |
ZCOUNT key min max |
返回有序集合 key 中,分数在 min 到 max(含两端)之间的成员数量 | O(1) |
ZRANGE key start stop [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES] |
返回有序集合 key 中指定区间的成员(默认按 score 从小到大排序);可带分数返回 | O(LogN+M) |
ZREVRANGE key start stop [WITHSCORES] |
返回有序集合 key 中指定区间的成员(按 score 从大到小排序);可带分数返回 | O(LogN+M) |
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] |
返回有序集合 key 中,分数在 min 到 max(含两端)的成员(按 score 升序) | O(LogN+M) |
ZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] |
返回有序集合 key 中,分数在 min 到 max(含两端)的成员(按 score 降序) | O(LogN+M) |
ZRANK key member |
返回有序集合 key 中 member 的排名(按 score 升序,排名从 0 开始) | O(LogN) |
ZREVRANK key member |
返回有序集合 key 中 member 的排名(按 score 降序,排名从 0 开始) | O(LogN) |
ZREMRANGEBYRANK key start stop |
移除有序集合 key 中,排名在 start 到 stop(含两端)的所有成员 | O(LogN+M) |
ZREMRANGEBYSCORE key min max |
移除有序集合 key 中,分数在 min 到 max(含两端)的所有成员 | O(LogN+M) |
ZREMRANGEBYLEX key min max |
移除有序集合 key 中,字典序在 min 到 max(含两端)的所有成员 | O(LogN+M) |
ZRANGEBYLEX key min max [LIMIT offset count] |
返回有序集合 key 中,字典序在 min 到 max(含两端)的成员 | O(LogN) |
ZLEXCOUNT key min max |
返回有序集合 key 中,字典序在 min 到 max(含两端)的成员数量 | O(LogN) |
ZSCAN cursor [MATCH pattern] [COUNT count] [TYPE type] |
基于游标的增量迭代器,用于遍历有序集合元素 | O(1) |
ZUNIONSTORE destination numkeys key [key ...] |
计算一个或多个有序集合的并集,将结果存储到 destination | O(N*LogN) |
ZINTERSTORE destination numkeys key [key ...] |
计算一个或多个有序集合的交集,将结果存储到 destination | O(N*LogN) |
6. 哈希(Hashes)
| 命令 | 功能描述 | 时间复杂度 |
|---|---|---|
HSET key field value [field value ...] |
为哈希表 key 的一个或多个域(field)设置对应值(value) | O(1) |
HSETNX key field value |
仅当哈希表 key 的域 field 不存在时,才设置其值为 value | O(1) |
HGET key field |
返回哈希表 key 中域 field 对应的值 | O(1) |
HEXISTS key field |
判断哈希表 key 中是否存在域 field;是返回 1,否返回 0 | O(1) |
HDEL key field [field ...] |
从哈希表 key 中删除一个或多个域(field) | O(1) |
HLEN key |
返回哈希表 key 中的域数量 | O(1) |
HSTRLEN key field |
返回哈希表 key 中,域 field 对应值的字符串长度 | O(1) |
HINCRBY key field increment |
将哈希表 key 中域 field 的值加指定整数增量(increment) | O(1) |
HINCRBYFLOAT key field increment |
将哈希表 key 中域 field 的值加指定浮点增量(increment) | O(1) |
HMSET key field value [field value ...] |
功能同 HSET,同时为多个域设值;已过时 | O(N) |
HMGET key field [field ...] |
同时返回哈希表 key 中多个域(field)对应的值 | O(N) |
HKEYS key |
返回哈希表 key 中的所有域(field) | O(N) |
HVALS key |
返回哈希表 key 中所有域对应的值(value) | O(N) |
HGETALL key |
返回哈希表 key 中所有的(field, value)对 | O(N) |
HSCAN key cursor [MATCH pattern] [COUNT count] |
基于游标的增量迭代器,用于遍历哈希表元素 | O(1) |
7. 位图(Bitmaps)
| 命令 | 功能描述 | 时间复杂度 |
|---|---|---|
SETBIT key offset value |
设置或清除键 key 对应位图中,偏移量 offset 处的位(value 为 0 或 1) | O(1) |
GETBIT key offset |
读取键 key 对应位图中,偏移量 offset 处的位值(0 或 1) | O(1) |
BITOP operation destkey key [key ...] |
对一个或多个位图执行位逻辑运算(operation:AND/OR/XOR/NOT),结果存到 destkey | O(N) |
BITPOS key bit [start [end [BYTE|BIT]]] |
返回键 key 对应位图中,第一个值为 bit(0 或 1)的位位置 | O(N) |
BITCOUNT key [start [end [BYTE|BIT]]] |
返回键 key 对应位图中,从 start 到 end(含两端)的所有 “1” 位数量 | O(N) |
8. 位域(Bitfields)
| 命令 | 功能描述 | 时间复杂度 |
|---|---|---|
BITFIELD key [GET encoding offset| [OVERFLOW WRAP|SAT|FAIL] <SET encoding offset value|INCRBY encoding offset increment> ...] |
将字符串 key 视为 bit 数组,执行任意位域整数运算(支持 GET/SET/INCRBY,可指定溢出策略) | O(1) |
BITFIELD_RO key [GET encoding offset [GET encoding offset ...]] |
功能同 BITFIELD,但仅支持只读操作(GET) | O(1) |
9. HyperLogLog
| 命令 | 功能描述 | 时间复杂度 |
|---|---|---|
PFADD key [element [element ...]] |
将一个或多个元素加入 HyperLogLog 结构 key;key 不存在则创建 | O(1) |
PFCOUNT key [key ...] |
返回一个或多个 HyperLogLog 结构的近似基数(元素去重后的数量) | O(1) |
PFMERGE destkey sourcekey [sourcekey ...] |
将一个或多个 sourcekey 的 HyperLogLog 数据合并到 destkey | O(N) |
PFDEBUG subcommand key |
调试 HyperLogLog 值的内部命令(用于开发 / 排查) | - |
10. 地理空间(Geospatial)
| 命令 | 功能描述 | 时间复杂度 |
|---|---|---|
GEOADD key [NX|XX] [CH] longitude latitude member [longitude latitude member ...] |
将一个或多个(经纬度,成员)对加入地理空间集合 key | O(1) |
GEODIST key member1 member2 [M|KM|FT|MI] |
计算地理空间集合 key 中,member1 与 member2 的距离;单位可选(米 / 千米 / 英尺 / 英里) | O(1) |
GEOHASH key member [member ...] |
以哈希字符串形式,返回地理空间集合 key 中成员的地理信息 | O(1) |
GEOPOS key member [member ...] |
返回地理空间集合 key 中,一个或多个成员的经纬度坐标 | O(1) |
GEORADIUS key longitude latitude radius M|KM|FT|MI |
以(longitude, latitude)为中心,半径 radius 内的地理成员,返回结果 | O(N+LogM) |
GEORADIUSBYMEMBER key member radius M|KM|FT|MI |
以地理空间集合 key 中的 member 为中心,半径 radius 内的成员,返回结果 | O(N+LogM) |
GEOSEARCH key FROMMEMBER member|FROMLONLAT longitude latitude BYRADIUS radius M|KM|FT|MI|BYBOX width height M|KM|FT|MI [ASC|DESC] [COUNT count [ANY]] [WITHCOORD] [WITHDIST] [WITHHASH] |
按条件搜索地理成员:支持 “按成员” 或 “按经纬度” 为中心,范围为圆形 / 矩形,可带附加信息 | O(N+LogM) |
GEOSEARCHSTORE destination source FROMMEMBER member|FROMLONLAT longitude latitude BYRADIUS radius M|KM|FT|MI|BYBOX width height M|KM|FT|MI [ASC|DESC] [COUNT count [ANY]] [STOREDIST] |
功能同 GEOSEARCH,但将搜索结果存储到 destination 集合 | O(LogN+M) |
11. 流(Streams)
| 命令 | 功能描述 | 时间复杂度 |
|---|---|---|
XADD key [NOMKSTREAM] [MAXLEN|MINID [=[] threshold [LIMIT count]]] *[id field value [field value ...] |
向流 key 追加新消息;key 不存在则创建;支持限制消息数量 | O(1) |
XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] id [id ...] |
读取流 key 中比指定 id 大的消息;无消息则阻塞至超时或有新消息 | O(1) |
XLEN key |
返回流 key 中存储的消息数量 | O(1) |
XRANGE key start end [COUNT count] |
返回流 key 中,id 在 start 到 end(含两端)之间的消息 | O(N) |
XINFO STREAM key [FULL [COUNT count]] |
返回流 key 的详细信息(如消息数、消费者组等) | O(1) |
XACK key group id [id ...] |
确认流 key 中,消费者组 group 已成功处理的消息(id 指定) | O(1) |
XCLAIM key group consumer min-idle-time id [id ...] |
为消费者组 group 的 consumer “认领” 流 key 中闲置超时的消息 | O(1) |
XDEL key id [id ...] |
从流 key 中删除指定 id 的消息,返回删除的消息数量 | O(1) |
XGROUP CREATE key groupname id|$ [MKSTREAM] [ENTRIESREAD entries_read] |
为流 key 创建消费者组 groupname;id 指定起始消息位置 | O(1) |
XGROUP CREATECONSUMER key groupname consumername |
在消费者组 groupname 中,创建新消费者 consumername | O(1) |
XGROUP DELCONSUMER key groupname consumername |
从消费者组 groupname 中,删除消费者 consumername | O(1) |
XGROUP DESTROY key groupname |
删除流 key 的消费者组 groupname | O(1) |
XGROUP SETID key groupname id|$ [ENTRIESREAD entries_read] |
设置消费者组 groupname 的 “最后交付 id”(调整消息消费起点) | O(1) |
XINFO CONSUMERS key groupname |
返回流 key 的消费者组 groupname 中,所有消费者的信息 | O(1) |
XINFO GROUPS key |
返回流 key 的所有消费者组信息 | O(1) |
XTRIM key MAXLEN|MINID [=|~] threshold [LIMIT count] |
从流 key 的开头删除消息,按 “最大长度” 或 “最小 id” 限制消息数量 | O(1) |
发表评论