Redis CLI 速查表:常用命令一览
Redis(Remote Dictionary Server)是一个开源、内存中的数据结构存储系统,它可以用作数据库、缓存和消息代理。其CLI(Command Line Interface)是与Redis实例交互的最直接方式。本速查表将详细介绍Redis CLI中最常用的一些命令,帮助您快速上手和高效使用。
一、连接与基本操作
在开始之前,您需要通过CLI连接到Redis服务器。
-
连接到Redis服务器:
bash
redis-cli -h <host> -p <port> -a <password>
# 示例:redis-cli -h 127.0.0.1 -p 6379
-h指定主机,-p指定端口,-a用于认证(如果Redis设置了密码)。 -
PING: 检查服务器是否运行。
bash
PING
# 返回 PONG -
QUIT: 关闭当前CLI连接。
bash
QUIT -
SELECT
: 切换到指定数据库(Redis默认有16个数据库,从0到15)。
bash
SELECT 0
二、键 (Keys)
Redis中的所有数据都以键值对的形式存储。
-
KEYS
: 查找所有符合给定模式的键。
注意:在生产环境中慎用KEYS,因为它会阻塞服务器。
bash
KEYS * # 查找所有键
KEYS user:* # 查找所有以 "user:" 开头的键 -
EXISTS
: 检查给定键是否存在。
bash
EXISTS mykey
# 返回 1 (存在) 或 0 (不存在) -
DEL
[key …] : 删除一个或多个键。
bash
DEL mykey key1 key2 -
EXPIRE
: 设置键的过期时间(秒)。
bash
EXPIRE mykey 60 # mykey 在 60 秒后过期 -
TTL
: 查看键的剩余生存时间(Time To Live),以秒为单位。
bash
TTL mykey
# 返回剩余秒数,-1 表示永不失效,-2 表示键不存在 -
PERSIST
: 移除键的过期时间,使其变为永久键。
bash
PERSIST mykey -
TYPE
: 返回键存储的值的类型。
bash
TYPE mykey
# 返回 string, list, hash, set, zset 等 -
RENAME
: 重命名键。
bash
RENAME oldname newname
三、字符串 (Strings)
字符串是Redis最基本的数据类型,可以存储文本或二进制数据。
-
SET
: 设置键的字符串值。
bash
SET mykey "Hello Redis" -
GET
: 获取键的字符串值。
bash
GET mykey
# 返回 "Hello Redis" -
SETEX
: 设置键值,并带有过期时间。
bash
SETEX mykey 60 "Hello with expire" # 60秒后过期 -
MSET
: 同时设置多个键值对。[key2 value2 …]
bash
MSET key1 "value1" key2 "value2" -
MGET
[key2 …] : 同时获取多个键的值。
bash
MGET key1 key2
# 返回 ["value1", "value2"] -
INCR
: 将键存储的数字值递增1。
bash
SET counter 10
INCR counter # 返回 11 -
DECR
: 将键存储的数字值递减1。
bash
DECR counter # 返回 10 -
INCRBY
: 将键存储的数字值递增指定值。
bash
INCRBY counter 5 # 返回 15 -
APPEND
: 将值追加到键的末尾。
bash
SET greeting "Hello"
APPEND greeting " World" # 返回 11 (新字符串长度)
GET greeting # 返回 "Hello World" -
STRLEN
: 获取键存储的字符串长度。
bash
STRLEN greeting # 返回 11
四、哈希 (Hashes)
哈希是字段(field)和值(value)的映射表,非常适合存储对象。
-
HSET
: 设置哈希表中指定字段的值。
bash
HSET user:1 name "Alice" age 30 -
HGET
: 获取哈希表中指定字段的值。
bash
HGET user:1 name # 返回 "Alice" -
HMSET
: 同时设置多个字段的值。[field2 value2 …]
注意:从 Redis 4.0 开始,HSET可以接受多个字段-值对,HMSET已被弃用。
bash
HSET user:2 name "Bob" age 25 -
HMGET
: 同时获取多个字段的值。[field2 …]
bash
HMGET user:1 name age # 返回 ["Alice", "30"] -
HGETALL
: 获取哈希表中所有字段和值。
bash
HGETALL user:1 # 返回 ["name", "Alice", "age", "30"] -
HKEYS
: 获取哈希表中所有字段名。
bash
HKEYS user:1 # 返回 ["name", "age"] -
HVALS
: 获取哈希表中所有字段值。
bash
HVALS user:1 # 返回 ["Alice", "30"] -
HEXISTS
: 检查哈希表中是否存在指定字段。
bash
HEXISTS user:1 email # 返回 0 -
HDEL
: 删除哈希表中一个或多个字段。[field …]
bash
HDEL user:1 age -
HLEN
: 获取哈希表中字段的数量。
bash
HLEN user:1 # 返回 1 (只剩 name 字段)
五、列表 (Lists)
列表是简单的字符串列表,按照插入顺序排序,可以从头部或尾部添加/移除元素。
-
LPUSH
: 将一个或多个值插入到列表头部。[value …]
bash
LPUSH mylist "c" "b" "a" # 列表为 ["a", "b", "c"] -
RPUSH
: 将一个或多个值插入到列表尾部。[value …]
bash
RPUSH mylist "d" "e" # 列表为 ["a", "b", "c", "d", "e"] -
LPOP
: 移除并返回列表的第一个元素。
bash
LPOP mylist # 返回 "a",列表为 ["b", "c", "d", "e"] -
RPOP
: 移除并返回列表的最后一个元素。
bash
RPOP mylist # 返回 "e",列表为 ["b", "c", "d"] -
LRANGE
: 获取列表指定范围内的元素。
bash
LRANGE mylist 0 -1 # 获取所有元素 ["b", "c", "d"]
LRANGE mylist 0 1 # 获取前两个元素 ["b", "c"] -
LLEN
: 获取列表的长度。
bash
LLEN mylist # 返回 3 -
LINDEX
: 通过索引获取列表中的元素。
bash
LINDEX mylist 1 # 返回 "c" -
LREM
: 从列表中移除指定数量的指定值。count > 0: 从头开始移除与 value 相等的 count 个元素。count < 0: 从尾开始移除与 value 相等的 count 绝对值 个元素。count = 0: 移除所有与 value 相等的元素。
bash
RPUSH mylist "f" "c"
LREM mylist 1 "c" # 移除一个 "c"
六、集合 (Sets)
集合是无序、不重复的字符串元素集合。
-
SADD
: 向集合添加一个或多个成员。[member …]
bash
SADD myset "apple" "banana" "cherry" -
SMEMBERS
: 获取集合中的所有成员。
bash
SMEMBERS myset # 返回 ["apple", "banana", "cherry"] (顺序不固定) -
SISMEMBER
: 检查成员是否是集合的成员。
bash
SISMEMBER myset "apple" # 返回 1
SISMEMBER myset "grape" # 返回 0 -
SCARD
: 获取集合的成员数量。
bash
SCARD myset # 返回 3 -
SREM
: 移除集合中的一个或多个成员。[member …]
bash
SREM myset "banana" -
SINTER
[key2 …] : 返回所有给定集合的交集。
bash
SADD set1 "a" "b" "c"
SADD set2 "b" "c" "d"
SINTER set1 set2 # 返回 ["b", "c"] -
SUNION
[key2 …] : 返回所有给定集合的并集。
bash
SUNION set1 set2 # 返回 ["a", "b", "c", "d"] -
SDIFF
[key2 …] : 返回第一个集合与其他集合之间的差异。
bash
SDIFF set1 set2 # 返回 ["a"]
七、有序集合 (Sorted Sets)
有序集合是集合的扩展,每个成员都关联一个分数(score),集合中的成员根据分数进行排序,分数相同则按字典序排序。
-
ZADD
: 向有序集合添加一个或多个成员及其分数。[score member …]
bash
ZADD myzset 100 "Alice" 90 "Bob" 80 "Charlie" -
ZRANGE
: 返回有序集合中指定索引范围内的成员。[WITHSCORES]
bash
ZRANGE myzset 0 -1 # 返回 ["Charlie", "Bob", "Alice"]
ZRANGE myzset 0 -1 WITHSCORES # 返回 ["Charlie", "80", "Bob", "90", "Alice", "100"] -
ZREVRANGE
: 返回有序集合中指定索引范围内的成员(分数从高到低)。[WITHSCORES]
bash
ZREVRANGE myzset 0 0 # 返回 ["Alice"] -
ZRANGEBYSCORE
: 返回有序集合中指定分数范围内的成员。[WITHSCORES] [LIMIT offset count]
bash
ZRANGEBYSCORE myzset 80 90 WITHSCORES # 返回 ["Charlie", "80", "Bob", "90"] -
ZSCORE
: 获取有序集合中指定成员的分数。
bash
ZSCORE myzset "Alice" # 返回 "100" -
ZREM
: 移除有序集合中的一个或多个成员。[member …]
bash
ZREM myzset "Charlie" -
ZINCRBY
: 增加有序集合中指定成员的分数。
bash
ZINCRBY myzset 5 "Bob" # Bob 的分数变为 95 -
ZCARD
: 获取有序集合的成员数量。
bash
ZCARD myzset # 返回 2
八、发布/订阅 (Pub/Sub)
Redis 的发布/订阅功能用于实现消息传递。
-
PUBLISH
: 将消息发布到指定频道。
bash
PUBLISH news "Breaking News: Redis is awesome!" -
SUBSCRIBE
[channel …] : 订阅一个或多个频道。
(此命令会阻塞客户端,直到连接关闭或取消订阅)
bash
SUBSCRIBE news -
PSUBSCRIBE
[pattern …] : 订阅一个或多个模式匹配的频道。
bash
PSUBSCRIBE news.* # 订阅所有以 "news." 开头的频道
九、事务 (Transactions)
Redis 事务允许您将一组命令作为一个原子操作执行。
-
MULTI: 标记一个事务块的开始。
bash
MULTI
SET key1 "value1"
INCR counter
EXEC -
EXEC: 执行所有事务块内的命令。
-
DISCARD: 取消事务块内的所有命令。
bash
MULTI
SET key1 "value1"
DISCARD -
WATCH
[key …] : 监视一个或多个键,如果在事务执行前这些键被修改,则事务会被打断(回滚)。
bash
WATCH mykey
# ... 在这里获取 mykey 的值并进行一些计算 ...
MULTI
# ... 基于 mykey 的值执行命令 ...
EXEC
十、服务器管理
-
INFO [section]: 获取 Redis 服务器的各种信息和统计数据。
bash
INFO # 获取所有信息
INFO server # 获取服务器信息
INFO memory # 获取内存信息 -
MONITOR: 实时打印 Redis 服务器接收到的所有命令。
注意:会影响性能,仅用于调试。
bash
MONITOR -
SHUTDOWN [NOSAVE|SAVE]: 关闭 Redis 服务器。
NOSAVE: 不保存数据。SAVE: 保存数据到磁盘。
bash
SHUTDOWN SAVE
总结
Redis CLI 是一个功能强大且灵活的工具,能够让您直接与 Redis 服务器交互,执行各种数据操作和服务器管理任务。本速查表涵盖了最常用的命令,但 Redis 的功能远不止于此。建议您查阅官方文档,深入了解更多高级特性和用法,例如流(Streams)、GeoSpatial、HyperLogLog 等,以充分发挥 Redis 的潜力。熟练掌握这些命令将极大地提升您使用 Redis 的效率和体验。