Redis 常用命令
2468 字
12 分钟
Redis 常用命令
Redis 常用命令
目录
- 基本操作
- 字符串 Strings
- 列表 Lists
- 集合 Sets
- 有序集合 Sorted Sets
- 哈希 Hashes
- 流 Streams
- 地理空间 Geospatial
- HyperLogLog
- 位图 Bitmaps
- 位域 Bitfields
基本操作
| 命令 | 说明 | 时间复杂度 |
|---|---|---|
redis-server | 启动 Redis 服务 | - |
redis-cli | 连接到 Redis(Redis CLI Client) | - |
telnet 127.0.0.1 6379 | 通过 telnet 连接 | - |
quit / exit | 退出客户端 | - |
字符串 Strings
| 命令 | 说明 | 时间复杂度 |
|---|---|---|
SET key value | 设置键 key 的值为 value | O(1) |
SETEX key seconds value | 设置键值,并指定超时时间为 seconds 秒 | O(1) |
PSETEX key milliseconds value | 设置键值,并指定超时时间为 milliseconds 毫秒 | O(1) |
SETNX key value | 仅在键 key 不存在时设置值 | O(1) |
GET key | 返回键 key 的值 | O(1) |
GETSET key value | 设置键值,并返回设置前的旧值(无旧值返回 nil) | O(1) |
APPEND key value | 将 value 追加到现有字符串末尾;key 不存在则创建 | O(1) |
SETRANGE key offset value | 从偏移量 offset 开始用 value 覆盖原字符串 | O(1) |
GETRANGE key start end | 返回字符串从 start 到 end 的子串 | O(N) |
STRLEN key | 获取键 key 的字符串长度 | O(1) |
INCR key / DECR key | 将数字值加一/减一;不存在则初始化为 0 | O(1) |
INCRBY key increment / DECRBY key decrement | 将数字值加上/减去指定量 | O(1) |
INCRBYFLOAT key increment | 将浮点数值加上增量 | O(1) |
MSET key value [key value ...] | 同时为多个键设置值 | O(N) |
MGET key [key ...] | 返回一个或多个键的值 | O(N) |
MSETNX key value [key value ...] | 当所有给定 key 都不存在时才设置 | O(N) |
列表 Lists
| 命令 | 说明 | 时间复杂度 |
|---|---|---|
LPUSH key element [element ...] | 将一个或多个元素添加到列表表头(左侧),多个值啧从左至右依次插入表头; 如果列表key不存在,则创建⼀个然后执⾏LPUSH插⼊操作;如果列表key存在但不是列表类型,则返回错误。 | O(1) |
LPUSHX key element [element ...] | 仅当 key 存在且为列表时,才执行 LPUSH | O(1) |
RPUSH key element [element ...] | 将⼀个或多个元素添加到列表key的表尾(右侧),多个值则从左⾄右依次插⼊表尾; 如果列表key不存在,则创建⼀个然后执⾏RPUSH插⼊操作;如果列表key存在但不是列表类型,则返回错误。 | O(1) |
RPUSHX key element [element ...] | 仅当 key 存在且为列表时,才执行 RPUSH | O(1) |
LPOP key [count] | 从列表头部移除并返回一个或 count 个元素;如果列表key不存在,则返回nil。 | O(1) |
RPOP key [count] | 从列表尾部移除并返回一个或 count 个元素;如果列表key不存在,则返回nil。 | O(1) |
RPOPLPUSH source destination | 原子操作:将 source 列表尾部元素弹出并插入到 destination 列表头部 | O(1) |
LREM key count element | 移除列表中与 element 相等的 count 个元素 | O(N) |
LLEN key | 返回列表长度;不存在返回 0 | O(1) |
LINDEX key index | 返回索引为 index 的元素 | O(N) |
LINSERT key BEFORE|AFTER pivot element | 将 element 插入到 pivot 之前或之后 | O(N) |
LSET key index element | 将索引为 index 的元素设置为 element | O(N) |
LRANGE key start stop | 返回 start 到 stop 之间的元素(包含两端) | O(S+N) |
LTRIM key start stop | 只保留 start 到 stop 之间的元素 | O(N) |
BLPOP key [key ...] timeout | LPOP 的阻塞版本,无元素时阻塞至超时或有新元素 | O(1) |
BRPOP key [key ...] timeout | RPOP 的阻塞版本,无元素时阻塞至超时或有新元素 | O(1) |
BRPOPLPUSH source destination timeout | RPOPLPUSH 的阻塞版本 | O(1) |
集合 Sets
| 命令 | 说明 | 时间复杂度 |
|---|---|---|
SADD key member [member ...] | 将元素加入集合;已存在元素被忽略 | O(1) |
SREM key member [member ...] | 从集合中移除元素;不存在的元素被忽略 | O(1) |
SMEMBERS key | 返回集合中的所有成员 | O(N) |
SISMEMBER key member | 判断 member 是否是集合成员 | O(1) |
SPOP key [count] | 移除并返回一个或 count 个随机元素 | O(1) |
SRANDMEMBER key [count] | 返回一个或 count 个随机元素(不移除) | O(1) |
SMOVE source destination member | 将 member 从 source 集合移动到 destination 集合(原子性) | O(1) |
SCARD key | 返回集合的基数(元素数量) | O(1) |
SINTER key [key ...] | 返回多个集合的交集 | O(N*M) |
SINTERSTORE destination key [key ...] | 计算交集并保存到 destination | O(N*M) |
SUNION key [key ...] | 返回多个集合的并集 | O(N*M) |
SUNIONSTORE destination key [key ...] | 计算并集并保存到 destination | O(N*M) |
SDIFF key [key ...] | 返回多个集合的差集 | O(N*M) |
SDIFFSTORE destination key [key ...] | 计算差集并保存到 destination | O(N*M) |
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type] | 增量迭代,基于游标的迭代器 | O(1) |
> 类似命令:HSCAN、SSCAN、ZSCAN
有序集合 Sorted Sets
| 命令 | 说明 | 时间复杂度 |
|---|---|---|
ZADD key [NX|XX] [GT|LT] [CH] [INCR] score member [score member ...] | 将成员及其分数加入有序集合 | O(M*LogN) |
ZSCORE key member | 返回成员的分数值 | O(1) |
ZINCRBY key increment member | 为成员的分数加上增量 | O(1) |
ZCOUNT key min max | 返回分数在 [min, max] 范围内的成员数量 | O(LogN) |
ZCARD key | 返回有序集合的基数 | O(1) |
ZRANGE key start stop [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES] | 返回指定区间成员(从小到大) | O(LogN+M) |
ZREVRANGE key start stop [WITHSCORES] | 返回指定区间成员(从大到小) | O(LogN+M) |
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] | 返回分数在指定区间的成员(从小到大) | O(LogN+M) |
ZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] | 返回分数在指定区间的成员(从大到小) | O(LogN+M) |
ZRANK key member | 返回成员的排名(从小到大) | O(LogN) |
ZREVRANK key member | 返回成员的排名(从大到小) | O(LogN) |
ZREM key member [member ...] | 移除一个或多个成员 | O(M*LogN) |
ZREMRANGEBYRANK key start stop | 移除指定排名区间内的所有成员 | O(LogN+M) |
ZREMRANGEBYSCORE key min max | 移除指定分数区间内的所有成员 | O(LogN+M) |
ZREMRANGEBYLEX key min max | 移除指定字典序区间内的所有成员 | O(LogN+M) |
ZRANGEBYLEX key min max [LIMIT offset count] | 返回字典序在指定区间的成员 | O(LogN+M) |
ZLEXCOUNT key min max | 返回字典序区间内的成员数量 | O(LogN) |
ZSCAN cursor [MATCH pattern] [COUNT count] [TYPE type] | 增量迭代 | O(1) |
ZUNIONSTORE destination numkeys key [key ...] | 计算一个或多个有序集合的并集并存储 | O(N) |
ZINTERSTORE destination numkeys key [key ...] | 计算一个或多个有序集合的交集并存储 | O(N*M) |
哈希 Hashes
| 命令 | 说明 | 时间复杂度 |
|---|---|---|
HSET key field value [field value ...] | 设置哈希表中域的值 | O(1) |
HGET key field | 返回给定域的值 | O(1) |
HSETNX key field value | 仅当域不存在时设置值 | O(1) |
HMSET key field value [field value ...] | 设置多个域值对(功能同 HSET,已过时) | O(N) |
HMGET key field [field ...] | 返回一个或多个给定域的值 | O(N) |
HGETALL key | 返回所有域和值 | O(N) |
HKEYS key | 返回所有域 | O(N) |
HVALS key | 返回所有域的值 | O(N) |
HEXISTS key field | 判断域是否存在于哈希表中 | O(1) |
HLEN key | 返回域的数量 | O(1) |
HSTRLEN key field | 返回给定域相关联的值的字符串长度 | O(1) |
HINCRBY key field increment | 将域的值加上增量 | O(1) |
HINCRBYFLOAT key field increment | 将域的值加上浮点数增量 | O(1) |
HDEL key field [field ...] | 删除一个或多个指定域 | O(1) |
HSCAN key cursor [MATCH pattern] [COUNT count] | 增量迭代 | O(N) |
流 Streams
| 命令 | 说明 | 时间复杂度 |
|---|---|---|
XADD key [NOMKSTREAM] [MAXLEN|MINID [=~|] threshold [LIMIT count]] *|id field value [field value ...] | 向流追加新消息;key 不存在则创建 | O(1) |
XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] id [id ...] | 读取并返回流中比 id 大的消息;无消息则阻塞 | O(1) |
XLEN key | 返回流中消息的数量 | O(1) |
XRANGE key start end [COUNT count] | 返回 id 在 [start, end] 之间的消息 | O(N) |
XDEL key id [id ...] | 从流中移除消息并返回移除数量 | O(1) |
XTRIM key MAXLEN|MINID [=~|] threshold [LIMIT count] | 从流开头删除消息 | O(1) |
XINFO STREAM key [FULL [COUNT count]] | 返回流的信息 | O(N) |
XINFO GROUPS key | 返回流的消费者组列表 | O(1) |
XINFO CONSUMERS key groupname | 返回消费者组中的消费者列表 | O(1) |
消费者组相关
| 命令 | 说明 | 时间复杂度 |
|---|---|---|
XGROUP CREATE key groupname id|$ [MKSTREAM] [ENTRIESREAD entries_read] | 创建消费者组 | O(1) |
XGROUP CREATECONSUMER key groupname consumername | 在消费者组中创建消费者 | O(1) |
XGROUP DELCONSUMER key groupname consumername | 删除消费者组中的消费者 | O(1) |
XGROUP DESTROY key groupname | 删除消费者组 | O(1) |
XGROUP SETID key groupname id|$ [ENTRIESREAD entries_read] | 设置消费者组的最后交付 id | O(1) |
XACK key group id [id ...] | 返回被消费者组成功接收的消息数量 | O(1) |
XCLAIM key group consumer min-idle-time id [id ...] | 转移消息所有权 | O(1) |
地理空间 Geospatial
| 命令 | 说明 | 时间复杂度 |
|---|---|---|
GEOADD key [NX|XX] [CH] longitude latitude member [longitude latitude member ...] | 添加一个或多个成员到地理空间 | O(1) |
GEODIST key member1 member2 [M|KM|FT|MI] | 返回两个成员的距离 | O(1) |
GEOHASH key member [member ...] | 以哈希字符串形式返回成员的地理信息 | O(1) |
GEOPOS key member [member ...] | 返回一个或多个成员的位置经纬度 | O(1) |
GEORADIUS key longitude latitude radius M|KM|FT|MI | 查询以指定位置为中心、半径范围内的成员 | O(N+LogM) |
GEORADIUSBYMEMBER key member radius M|KM|FT|MI | 查询以成员为中心、半径范围内的成员 | 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] | 搜索并存储结果到 destination | O(N+LogM) |
HyperLogLog
| 命令 | 说明 | 时间复杂度 |
|---|---|---|
PFADD key [element [element ...]] | 添加元素到 HyperLogLog;不存在则创建 | O(1) |
PFCOUNT key [key ...] | 返回近似基数 | O(1) |
PFMERGE destkey sourcekey [sourcekey ...] | 合并一个或多个 sourcekey 到 destkey | O(N) |
PFDEBUG subcommand key | 调试 HyperLogLog 的内部命令 | - |
位图 Bitmaps
| 命令 | 说明 | 时间复杂度 |
|---|---|---|
SETBIT key offset value | 设置或清除偏移量为 offset 的位 | O(1) |
GETBIT key offset | 读取偏移量为 offset 的位的值 | O(1) |
BITOP operation destkey key [key ...] | 对一个或多个 key 进行位逻辑运算(AND/OR/XOR/NOT),结果存储在 destkey | O(N) |
BITPOS key bit [start [end [BYTE|BIT]]] | 返回第一个指定 bit 位(0 或 1)的位置 | O(N) |
BITCOUNT key [start [end [BYTE|BIT]]] | 返回从 start 到 end 中值为 1 的位的数量 | O(N) |
位域 Bitfields
| 命令 | 说明 | 时间复杂度 |
|---|---|---|
BITFIELD key [GET encoding offset|[OVERFLOW WRAP|SAT|FAIL] <SET encoding offset value|INCRBY encoding offset increment> [GET encoding offset|[OVERFLOW WRAP|SAT|FAIL] <SET encoding offset value|INCRBY encoding offset increment> ...]] | 将 String 当做 bit 数组,执行任意位域整数运算 | O(1) |
BITFIELD_RO key [GET encoding offset [GET encoding offset ...]] | 位域运算的只读版本 | O(1) |
通用命令
| 命令 | 说明 | 时间复杂度 |
|---|---|---|
DEL key [key ...] | 删除给定的一个或多个键 | O(1) |
> 📌 提示:本文档基于 GeekHour 出品的 Redis Cheat Sheet 整理,涵盖了 Redis 最常用的数据类型和命令,适合作为日常开发参考。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!





















