Redis 常用命令

2468 字
12 分钟
Redis 常用命令

Redis 常用命令#

目录#

  1. 基本操作
  2. 字符串 Strings
  3. 列表 Lists
  4. 集合 Sets
  5. 有序集合 Sorted Sets
  6. 哈希 Hashes
  7. 流 Streams
  8. 地理空间 Geospatial
  9. HyperLogLog
  10. 位图 Bitmaps
  11. 位域 Bitfields

基本操作#

命令说明时间复杂度
redis-server启动 Redis 服务-
redis-cli连接到 Redis(Redis CLI Client)-
telnet 127.0.0.1 6379通过 telnet 连接-
quit / exit退出客户端-

字符串 Strings#

命令说明时间复杂度
SET key value设置键 key 的值为 valueO(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将数字值加一/减一;不存在则初始化为 0O(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 存在且为列表时,才执行 LPUSHO(1)
RPUSH key element [element ...]将⼀个或多个元素添加到列表key的表尾(右侧),多个值则从左⾄右依次插⼊表尾;
如果列表key不存在,则创建⼀个然后执⾏RPUSH插⼊操作;如果列表key存在但不是列表类型,则返回错误。
O(1)
RPUSHX key element [element ...]仅当 key 存在且为列表时,才执行 RPUSHO(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返回列表长度;不存在返回 0O(1)
LINDEX key index返回索引为 index 的元素O(N)
LINSERT key BEFORE|AFTER pivot element将 element 插入到 pivot 之前或之后O(N)
LSET key index element将索引为 index 的元素设置为 elementO(N)
LRANGE key start stop返回 start 到 stop 之间的元素(包含两端)O(S+N)
LTRIM key start stop只保留 start 到 stop 之间的元素O(N)
BLPOP key [key ...] timeoutLPOP 的阻塞版本,无元素时阻塞至超时或有新元素O(1)
BRPOP key [key ...] timeoutRPOP 的阻塞版本,无元素时阻塞至超时或有新元素O(1)
BRPOPLPUSH source destination timeoutRPOPLPUSH 的阻塞版本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 ...]计算交集并保存到 destinationO(N*M)
SUNION key [key ...]返回多个集合的并集O(N*M)
SUNIONSTORE destination key [key ...]计算并集并保存到 destinationO(N*M)
SDIFF key [key ...]返回多个集合的差集O(N*M)
SDIFFSTORE destination key [key ...]计算差集并保存到 destinationO(N*M)
SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]增量迭代,基于游标的迭代器O(1)

> 类似命令:HSCANSSCANZSCAN


有序集合 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]设置消费者组的最后交付 idO(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]搜索并存储结果到 destinationO(N+LogM)

HyperLogLog#

命令说明时间复杂度
PFADD key [element [element ...]]添加元素到 HyperLogLog;不存在则创建O(1)
PFCOUNT key [key ...]返回近似基数O(1)
PFMERGE destkey sourcekey [sourcekey ...]合并一个或多个 sourcekey 到 destkeyO(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),结果存储在 destkeyO(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 最常用的数据类型和命令,适合作为日常开发参考。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
Redis 常用命令
https://kulve.tech/posts/redis常用命令/
作者
Kulve
发布于
2026-07-09
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Kulve
Hello, I'm Kulve.
公告
欢迎来到我的博客!这是一则示例公告。正在建设与测试此网站。
分类
标签
最新动态
站点统计
文章
17
分类
10
标签
23
总字数
33,120
运行时长
0
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.15.2
文章许可
CC BY-NC-SA 4.0