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

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

🔑 通用命令

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

命令 作用 示例
PING 测试与服务器的连接是否正常,正常会返回 PONG PING
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等调试命令会影响性能,建议仅在必要时使用。