跳到主要内容

Redis 命令速查表

本页面汇总了 Redis 最常用的命令,方便快速查阅。

键操作

命令说明示例
KEYS pattern查找键KEYS user:*
EXISTS key检查键是否存在EXISTS mykey
DEL key [key ...]删除键DEL key1 key2
EXPIRE key seconds设置过期时间EXPIRE mykey 60
TTL key查看剩余时间TTL mykey
PERSIST key移除过期时间PERSIST mykey
RENAME key newkey重命名键RENAME old new
TYPE key查看键类型TYPE mykey
SCAN cursor [MATCH] [COUNT]迭代键SCAN 0 MATCH user:*

字符串操作

命令说明示例
SET key value设置值SET name "张三"
GET key获取值GET name
SETEX key seconds value设置并过期SETEX session 3600 "data"
SETNX key value不存在才设置SETNX lock true
MSET key value [key value ...]批量设置MSET k1 v1 k2 v2
MGET key [key ...]批量获取MGET k1 k2 k3
INCR key自增1INCR counter
DECR key自减1DECR counter
INCRBY key increment增加指定值INCRBY counter 10
APPEND key value追加值APPEND name "先生"
STRLEN key获取长度STRLEN name
GETRANGE key start end获取子串GETRANGE name 0 2
SETRANGE key offset value替换子串SETRANGE name 0 "Li"

哈希操作

命令说明示例
HSET key field value设置字段HSET user:1 name "张三"
HGET key field获取字段HGET user:1 name
HMSET key field value [field value ...]批量设置HMSET user:1 name "张三" age 25
HMGET key field [field ...]批量获取HMGET user:1 name age
HGETALL key获取所有HGETALL user:1
HKEYS key获取所有字段HKEYS user:1
HVALS key获取所有值HVALS user:1
HDEL key field [field ...]删除字段HDEL user:1 age
HLEN key字段数量HLEN user:1
HEXISTS key field字段是否存在HEXISTS user:1 name
HINCRBY key field increment字段增加HINCRBY user:1 age 1
HSETNX key field value不存在才设置HSETNX user:1 email "[email protected]"

列表操作

命令说明示例
LPUSH key value [value ...]左侧插入LPUSH queue "task1"
RPUSH key value [value ...]右侧插入RPUSH queue "task2"
LPOP key左侧弹出LPOP queue
RPOP key右侧弹出RPOP queue
BLPOP key [key ...] timeout阻塞左侧弹出BLPOP queue 0
BRPOP key [key ...] timeout阻塞右侧弹出BRPOP queue 0
LRANGE key start stop获取范围LRANGE queue 0 -1
LLEN key列表长度LLEN queue
LINDEX key index获取指定索引LINDEX queue 0
LSET key index value设置指定索引LSET queue 0 "new"
LREM key count value删除元素LREM queue 1 "task1"
LTRIM key start stop裁剪列表LTRIM queue 0 99
RPOPLPUSH source destination转移元素RPOPLPUSH queue processing

集合操作

命令说明示例
SADD key member [member ...]添加成员SADD tags "redis"
SREM key member [member ...]移除成员SREM tags "redis"
SMEMBERS key获取所有成员SMEMBERS tags
SISMEMBER key member是否成员SISMEMBER tags "redis"
SCARD key成员数量SCARD tags
SPOP key [count]随机弹出SPOP tags 1
SRANDMEMBER key [count]随机获取SRANDMEMBER tags 3
SINTER key [key ...]交集SINTER tags1 tags2
SUNION key [key ...]并集SUNION tags1 tags2
SDIFF key [key ...]差集SDIFF tags1 tags2
SINTERSTORE dest key [key ...]交集存储SINTERSTORE result t1 t2

有序集合操作

命令说明示例
ZADD key score member [score member ...]添加成员ZADD leaderboard 100 "player1"
ZREM key member [member ...]移除成员ZREM leaderboard "player1"
ZRANGE key start stop [WITHSCORES]按分数升序ZRANGE leaderboard 0 9 WITHSCORES
ZREVRANGE key start stop [WITHSCORES]按分数降序ZREVRANGE leaderboard 0 9
ZRANGEBYSCORE key min max按分数范围ZRANGEBYSCORE leaderboard 0 100
ZSCORE key member获取分数ZSCORE leaderboard "player1"
ZRANK key member获取排名(升序)ZRANK leaderboard "player1"
ZREVRANK key member获取排名(降序)ZREVRANK leaderboard "player1"
ZCARD key成员数量ZCARD leaderboard
ZCOUNT key min max分数范围计数ZCOUNT leaderboard 0 100
ZINCRBY key increment member增加分数ZINCRBY leaderboard 10 "player1"
ZREMRangeBYRANK key start stop按排名删除ZREMRANGEBYRANK leaderboard 0 9
ZREMRangeBYSCORE key min max按分数删除ZREMRANGEBYSCORE leaderboard 0 50

位图操作

命令说明示例
SETBIT key offset value设置位SETBIT bitmap 100 1
GETBIT key offset获取位GETBIT bitmap 100
BITCOUNT key [start end]统计1的数量BITCOUNT bitmap
BITPOS key bit [start end]查找第一个位BITPOS bitmap 1
BITOP operation destkey key [key ...]位运算BITOP AND result b1 b2

HyperLogLog 操作

命令说明示例
PFADD key element [element ...]添加元素PFADD visitors "ip1"
PFCOUNT key [key ...]估算基数PFCOUNT visitors
PFMERGE destkey sourcekey [sourcekey ...]合并PFMERGE result h1 h2

地理空间操作

命令说明示例
GEOADD key longitude latitude member添加位置GEOADD cities 116.4 39.9 "北京"
GEOPOS key member [member ...]获取位置GEOPOS cities "北京"
GEODIST key member1 member2 [unit]计算距离GEODIST cities "北京" "上海" km
GEORADIUS key lon lat radius unit范围查询GEORADIUS cities 116.4 39.9 100 km
GEORADIUSBYMEMBER key member radius unit按成员查询GEORADIUSBYMEMBER cities "北京" 100 km
GEOHASH key member [member ...]获取哈希GEOHASH cities "北京"

事务操作

命令说明
MULTI开始事务
EXEC执行事务
DISCARD取消事务
WATCH key [key ...]监视键
UNWATCH取消监视
# 事务示例
MULTI
SET balance 100
DECRBY balance 20
EXEC

发布订阅

命令说明示例
PUBLISH channel message发布消息PUBLISH news "hello"
SUBSCRIBE channel [channel ...]订阅频道SUBSCRIBE news
UNSUBSCRIBE [channel ...]取消订阅UNSUBSCRIBE news
PSUBSCRIBE pattern [pattern ...]模式订阅PSUBSCRIBE news.*
PUNSUBSCRIBE [pattern ...]取消模式订阅PUNSUBSCRIBE news.*

持久化命令

命令说明
SAVE同步保存
BGSAVE后台保存
BGREWRITEAOF重写 AOF
LASTSAVE上次保存时间
INFO persistence持久化信息

服务器管理

命令说明示例
INFO [section]服务器信息INFO memory
CONFIG GET parameter获取配置CONFIG GET maxmemory
CONFIG SET parameter value设置配置CONFIG SET maxmemory 1gb
CONFIG REWRITE重写配置文件-
MONITOR实时监控-
SLOWLOG subcommand慢查询日志SLOWLOG GET 10
CLIENT LIST客户端列表-
CLIENT KILL ip:port关闭客户端-
FLUSHDB清空当前库-
FLUSHALL清空所有库-
DBSIZE键数量-
SELECT index选择数据库SELECT 1
AUTH password认证AUTH mypassword
PING测试连接-
ECHO message回显ECHO "hello"
TIME服务器时间-

内存管理

命令说明示例
MEMORY DOCTOR内存诊断-
MEMORY USAGE key键内存使用MEMORY USAGE mykey
MEMORY STATS内存统计-
MEMORY PURGE释放内存-

集群命令

命令说明
CLUSTER INFO集群信息
CLUSTER NODES节点列表
CLUSTER SLOTS槽位信息
CLUSTER MEET ip port添加节点
CLUSTER REPLICATE node-id复制节点
CLUSTER FAILOVER故障转移
CLUSTER ADDSLOTS slot [slot ...]分配槽位

常用应用场景

缓存模式

# 设置缓存(1小时过期)
SET user:1001 "{\"name\":\"张三\",\"age\":25}" EX 3600

# 获取缓存
GET user:1001

# 更新缓存
SET user:1001 "{\"name\":\"张三\",\"age\":26}" EX 3600

# 删除缓存
DEL user:1001

计数器

# 页面访问计数
INCR page:view:home

# 增加指定值
INCRBY user:1001:score 10

# 获取当前值
GET page:view:home

分布式锁

# 加锁
SET lock:resource "unique_value" NX EX 30

# 解锁(使用 Lua 脚本确保原子性)
EVAL "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end" 1 lock:resource unique_value

限流器

# 滑动窗口限流
ZADD rate_limit:user:1001 <current_timestamp> <unique_id>
ZREMRANGEBYSCORE rate_limit:user:1001 0 <timestamp_1_min_ago>
ZCARD rate_limit:user:1001
EXPIRE rate_limit:user:1001 60

排行榜

# 添加分数
ZADD leaderboard 1000 "player1"
ZADD leaderboard 1500 "player2"
ZADD leaderboard 800 "player3"

# 获取前10名
ZREVRANGE leaderboard 0 9 WITHSCORES

# 获取玩家排名
ZREVRANK leaderboard "player1"

# 获取玩家分数
ZSCORE leaderboard "player1"

消息队列

# 生产者
LPUSH queue:tasks "{\"id\":1,\"task\":\"send_email\"}"
LPUSH queue:tasks "{\"id\":2,\"task\":\"process_image\"}"

# 消费者(阻塞弹出)
BRPOP queue:tasks 0

会话存储

# 创建会话
HSET session:abc123 user_id 1001 login_time 1234567890
EXPIRE session:abc123 3600

# 获取会话
HGETALL session:abc123

# 更新过期时间
EXPIRE session:abc123 3600

购物车

# 添加商品
HSET cart:user:1001 product:2001 2
HSET cart:user:1001 product:2002 1

# 修改数量
HINCRBY cart:user:1001 product:2001 1

# 删除商品
HDEL cart:user:1001 product:2001

# 获取购物车
HGETALL cart:user:1001

# 清空购物车
DEL cart:user:1001

性能优化建议

  1. 使用管道(Pipeline):批量执行命令减少网络往返
  2. 选择合适的数据结构:根据场景选择最优数据结构
  3. 设置合理的过期时间:避免内存无限增长
  4. 使用哈希存储对象:比 JSON 字符串更节省内存
  5. 控制键名长度:过长的键名会增加内存开销
  6. 避免大键:单个键值不宜过大(建议 < 1MB)
  7. 使用连接池:复用连接减少开销
  8. 启用压缩:对大型值启用压缩

Stream 操作

命令说明示例
XADD key * field value添加消息XADD mystream * name "张三"
XLEN key获取消息数量XLEN mystream
XRANGE key - +获取所有消息XRANGE mystream - +
XREVRANGE key + -反向获取消息XREVRANGE mystream + - COUNT 10
XREAD STREAMS key $读取新消息XREAD BLOCK 5000 STREAMS mystream $
XDEL key ID删除消息XDEL mystream 1692632086370-0
XTRIM key MAXLEN count修剪 StreamXTRIM mystream MAXLEN 1000
XGROUP CREATE key group $创建消费者组XGROUP CREATE mystream mygroup $
XREADGROUP GROUP group consumer STREAMS key >消费消息XREADGROUP GROUP mygroup worker1 STREAMS mystream >
XACK key group ID确认消息XACK mystream mygroup 1692632086370-0
XPENDING key group查看待处理消息XPENDING mystream mygroup
XCLAIM key group consumer time ID转移消息XCLAIM mystream mygroup worker2 60000 1692632086370-0
XINFO STREAM key查看 Stream 信息XINFO STREAM mystream
# 消息队列示例
# 生产者
XADD task_queue * type "email" data '{"to":"[email protected]"}'

# 消费者
XREADGROUP GROUP workers consumer1 STREAMS task_queue >
XACK task_queue workers 1692632086370-0

Vector Sets 操作(Redis 8.0+)

命令说明示例
VADD key vector element添加向量VADD myset "1.0,2.0,3.0" item1
VSIM key vector相似性搜索VSIM myset "1.1,2.1,3.1" WITHSCORES COUNT 10
VEMB key element获取向量VEMB myset item1
VCARD key获取元素数量VCARD myset
VDIM key获取向量维度VDIM myset
VREM key element删除元素VREM myset item1
VSETATTR key element json设置属性VSETATTR myset item1 '{"category":"tech"}'
VGETATTR key element获取属性VGETATTR myset item1
VINFO key获取详细信息VINFO myset
# 向量搜索示例
VADD products "0.5,0.3,0.8" prod_001 SETATTR '{"name":"Redis实战","price":89}'
VSIM products "0.6,0.4,0.7" WITHSCORES COUNT 5 FILTER ".price < 100"

Hash 字段过期操作(Redis 7.4+)

命令说明示例
HEXPIRE key seconds FIELDS n field设置字段 TTL(秒)HEXPIRE user:1 60 FIELDS 1 session
HPEXPIRE key ms FIELDS n field设置字段 TTL(毫秒)HPEXPIRE user:1 5000 FIELDS 1 token
HTTL key FIELDS n field获取字段剩余 TTL(秒)HTTL user:1 FIELDS 1 session
HPTTL key FIELDS n field获取字段剩余 TTL(毫秒)HPTTL user:1 FIELDS 1 token
HPERSIST key FIELDS n field移除字段过期时间HPERSIST user:1 FIELDS 1 session
# Hash 字段过期示例
HSET user:1001 name "张三" session "abc123"
HEXPIRE user:1001 1800 FIELDS 1 session # session 30分钟后过期
HTTL user:1001 FIELDS 1 session # 查看剩余时间

Hash 字段高级操作(Redis 8.0+)

命令说明示例
HGETEX key [EX seconds] FIELDS n field获取字段并设置过期HGETEX cache EX 60 FIELDS 1 key
HSETEX key [EX seconds] FIELDS n field value设置字段并设置过期HSETEX cache EX 300 FIELDS 1 key value
HGETDEL key FIELDS n field获取并删除字段HGETDEL tokens FIELDS 1 one_time_key
# 滑动过期缓存(每次读取自动续期)
HGETEX session:user1 EX 1800 FIELDS 1 data

# 一次性令牌消费
HSET tokens:verify "abc123" "user_data"
HGETDEL tokens:verify FIELDS 1 "abc123" # 获取后自动删除

参考资料