Redis常用命令大全:从入门到精通

Redis常用命令大全:从入门到精通

Redis的命令按功能可以分为几个大类,下面整理了最常用的一些命令。

🔑 通用命令

这些命令不针对特定数据类型,用于日常管理和操作。

命令作用示例
PING测试与服务器的连接是否正常,正常会返回PONGPING
SELECT index切换到指定的数据库(默认有16个,索引从0开始)。SELECT 1
KEYS pattern查找所有符合给定模式(pattern)的key。生产环境慎用,可能阻塞服务KEYS user:*
SCAN cursor迭代当前数据库中的key,是KEYS命令的安全替代方案。SCAN 0 MATCH user:* COUNT 10
EXISTS key检查一个或多个key是否存在。EXISTS myKey
DEL key删除指定的一个或多个key。DEL myKey yourKey
TYPE key返回key所存储的值的数据类型。TYPE myKey
EXPIRE key seconds为给定的key设置过期时间,单位是秒。EXPIRE session:123 1800
TTL key以秒为单位,返回给定key的剩余生存时间。TTL session:123
PERSIST key移除给定key的过期时间,使其永不过期。PERSIST session:123

📊 各数据类型专属命令

Redis支持多种数据结构,每种都有其专用的命令。

1. 字符串 (String)

最基础的类型,适合缓存、计数器等。

命令作用示例
SET key value设置指定key的值。SET user:1 "Alice"
GET key获取指定key的值。GET user:1
MSET key value [key value ...]批量设置多个key的值。MSET name "Bob" age "30"
MGET key [key ...]批量获取多个key的值。MGET name age
INCR key将key中存储的数字值加1。INCR page_views
DECR key将key中存储的数字值减1。DECR stock
INCRBY key increment将key中存储的数字值增加指定的步长。INCRBY counter 10
APPEND key value如果key已经存在,将value追加到原值的末尾。APPEND msg " world"
STRLEN key返回key所存储的字符串值的长度。STRLEN msg
2. 哈希 (Hash)

适合存储对象,如用户信息、商品详情等。

命令作用示例
HSET key field value为哈希表中的字段赋值。HSET user:1000 name "Alice"
HGET key field获取哈希表中指定字段的值。HGET user:1000 name
HMSET key field value [field value ...]批量设置哈希表中的多个字段。HMSET user:1000 name "Alice" age "25"
HMGET key field [field ...]批量获取哈希表中多个字段的值。HMGET user:1000 name age
HGETALL key获取哈希表中所有的字段和值。HGETALL user:1000
HDEL key field删除哈希表中的一个或多个字段。HDEL user:1000 age
HINCRBY key field increment为哈希表中指定字段的整数值加上增量。HINCRBY user:1000 score 5
HEXISTS key field判断哈希表中是否存在某个字段。HEXISTS user:1000 name
HLEN key获取哈希表中字段的数量。HLEN user:1000
3. 列表 (List)

双向链表结构,适合消息队列、最新消息列表等场景。

命令作用示例
LPUSH key value [value ...]将一个或多个值插入到列表的头部(左侧)。LPUSH tasks "task1"
RPUSH key value [value ...]将一个或多个值插入到列表的尾部(右侧)。RPUSH tasks "task3"
LPOP key移除并返回列表头部的元素。LPOP tasks
RPOP key移除并返回列表尾部的元素。RPOP tasks
LRANGE key start stop返回列表指定区间内的元素(0表示第一个,-1表示最后一个)。LRANGE messages 0 -1
BLPOP key [key ...] timeout阻塞式地从列表头部弹出元素,若列表为空则等待超时。BLPOP alerts 30
4. 集合 (Set)

无序且唯一的集合,适合去重、共同好友等场景。

命令作用示例
SADD key member [member ...]向集合中添加一个或多个成员。SADD tags "redis" "db"
SMEMBERS key返回集合中的所有成员。SMEMBERS tags
SISMEMBER key member判断成员是否存在于集合中。SISMEMBER tags "redis"
SREM key member [member ...]移除集合中的一个或多个成员。SREM tags "db"
SINTER key [key ...]返回多个集合的交集。SINTER group1 group2
SUNION key [key ...]返回多个集合的并集。SUNION all_users
SDIFF key [key ...]返回第一个集合与其他集合的差集。SDIFF group1 group2
SCARD key获取集合中成员的数量。SCARD tags
SPOP key [count]随机移除并返回集合中的一个或多个成员。SPOP lottery 3
5. 有序集合 (Sorted Set)

每个元素关联一个分数,按分数排序,适合排行榜等场景。

命令作用示例
ZADD key score member [score member ...]向有序集合中添加一个或多个成员,或更新其分数。ZADD leaderboard 100 "PlayerA"
ZRANGE key start stop [WITHSCORES]按分数从小到大,返回指定索引范围内的成员。ZRANGE leaderboard 0 2 WITHSCORES
ZREVRANGE key start stop [WITHSCORES]按分数从大到小,返回指定索引范围内的成员。ZREVRANGE leaderboard 0 2
ZREM key member [member ...]移除有序集合中的一个或多个成员。ZREM leaderboard "PlayerB"
ZINCRBY key increment member为有序集合中指定成员的分数增加增量。ZINCRBY leaderboard 10 "PlayerA"
ZRANK key member返回成员按分数从小到大排序的排名(从0开始)。ZRANK leaderboard "PlayerA"
ZCARD key获取有序集合中成员的数量。ZCARD leaderboard
ZCOUNT key min max计算分数在指定区间内的成员数量。ZCOUNT leaderboard 50 100

🛠️ 服务器与高级功能

除了数据操作,Redis还提供了丰富的管理和高级功能命令。

命令作用示例
服务器管理
DBSIZE返回当前数据库中key的数量。DBSIZE
FLUSHDB清空当前数据库中的所有key(谨慎操作)。FLUSHDB
FLUSHALL清空所有数据库中的所有key(非常谨慎操作)。FLUSHALL
INFO [section]返回关于Redis服务器的各种信息和统计。INFO memory
CONFIG GET parameter获取Redis服务器的配置参数。CONFIG GET maxmemory
持久化
SAVE同步执行,将数据保存到磁盘,会阻塞主线程。SAVE
BGSAVE异步执行,在后台将数据保存到磁盘,不阻塞主线程。BGSAVE
事务
MULTI标记一个事务块的开始。MULTI
EXEC执行所有在MULTI之后入队的命令。EXEC
DISCARD取消事务,放弃执行事务块内的所有命令。DISCARD
发布订阅
SUBSCRIBE channel订阅给定的一个或多个频道。SUBSCRIBE news
PUBLISH channel message向指定频道发送消息。PUBLISH news "Hello"

💡 使用建议

  • 生产环境慎用KEYS:它可能会阻塞Redis服务,线上环境建议使用SCAN命令进行迭代。
  • 清空操作极其危险FLUSHDBFLUSHALL命令会永久删除数据,在执行前请务必确认。
  • 性能与安全MONITOR等调试命令会影响性能,建议仅在必要时使用。