Redis 命令指南:CLI 使用教程
Redis (Remote Dictionary Server) 是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis 以其高性能、多功能性和对各种数据结构的支持而闻名。与 Redis 交互的最常见方式之一是通过其命令行界面(CLI),即 redis-cli。
本指南将详细介绍如何使用 redis-cli,从连接到服务器到执行各种数据类型和管理命令。
连接到 Redis
要启动 redis-cli 并连接到 Redis 服务器,请打开您的终端并输入 redis-cli。
默认情况下,redis-cli 会尝试连接到运行在 localhost 的 6379 端口上的 Redis 服务器。
bash
redis-cli
如果您的 Redis 服务器在不同的主机、端口或需要密码,您可以使用以下选项:
-h <hostname>:指定主机名或 IP 地址。-p <port>:指定端口号。-a <password>:使用密码进行身份验证。-n <database_number>:选择一个特定的数据库(默认情况下为 0-15)。
示例: 连接到 IP 地址为 192.168.1.100,端口为 6380,密码为 yourpassword 的服务器,并选择数据库 1。
bash
redis-cli -h 192.168.1.100 -p 6380 -a yourpassword -n 1
成功连接后,您将看到一个类似于 127.0.0.1:6379> 的提示符,表示您已准备好执行 Redis 命令。
基本命令
在深入了解数据类型之前,这里有一些基本的 redis-cli 命令。
-
PING
检查服务器是否正在运行。如果服务器正常,它将返回PONG。
127.0.0.1:6379> PING
PONG -
ECHO message
打印给定消息。
127.0.0.1:6379> ECHO "Hello Redis!"
"Hello Redis!" -
SELECT index
选择具有给定零基数字索引的 Redis 逻辑数据库。Redis 默认支持 16 个数据库,编号从 0 到 15。
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> -
QUIT或EXIT
关闭与 Redis 服务器的连接并退出 CLI。
127.0.0.1:6379> QUIT
Redis 数据类型和命令
Redis 将数据存储在键值对中,其中键始终是字符串。值可以是各种数据类型,每种数据类型都有其特定的命令集。
1. 字符串 (Strings)
字符串是 Redis 中最基本的数据类型,可以存储文本或二进制数据,最大可达 512MB。
-
SET key value
为键设置一个字符串值。如果键已存在,其值将被覆盖。
SET mykey "Hello"
OK -
GET key
检索键的字符串值。
GET mykey
"Hello" -
DEL key [key ...]
删除一个或多个键。
DEL mykey
(integer) 1 -
INCR key
将键的整数值增加一。如果键不存在,则在执行操作前将其设置为 0。
SET counter 10
OK
INCR counter
(integer) 11 -
DECR key
将键的整数值减一。
DECR counter
(integer) 10 -
APPEND key value
将值附加到键的字符串值后面。如果键不存在,则创建它。
SET greeting "Hello"
OK
APPEND greeting " World"
(integer) 11
GET greeting
"Hello World" -
STRLEN key
返回存储在键中的字符串值的长度。
STRLEN greeting
(integer) 11
2. 哈希 (Hashes)
哈希是字符串字段和字符串值之间的映射,非常适合表示对象。
-
HSET key field value [field value ...]
设置哈希字段的字符串值。
HSET user:1 name "Alice" email "[email protected]"
(integer) 2 -
HGET key field
检索哈希中与字段关联的值。
HGET user:1 name
"Alice" -
HGETALL key
返回存储在键中的哈希的所有字段和值。
HGETALL user:1
1) "name"
2) "Alice"
3) "email"
4) "[email protected]" -
HDEL key field [field ...]
删除一个或多个哈希字段。
HDEL user:1 email
(integer) 1
3. 列表 (Lists)
列表是有序的字符串集合。元素可以添加到头部或尾部。
-
LPUSH key value [value ...]
将所有指定的值插入到存储在key的列表的头部。
LPUSH mylist "world"
(integer) 1
LPUSH mylist "hello"
(integer) 2 -
RPUSH key value [value ...]
将所有指定的值插入到存储在key的列表的尾部。
RPUSH mylist "!"
(integer) 3 -
LPOP key
移除并返回列表的第一个元素。
LPOP mylist
"hello" -
RPOP key
移除并返回列表的最后一个元素。
RPOP mylist
"!" -
LRANGE key start stop
返回列表的指定元素。0是第一个元素,-1是最后一个元素。
LRANGE mylist 0 -1
1) "world"
4. 集合 (Sets)
集合是无序的、唯一的字符串集合。
-
SADD key member [member ...]
向集合添加一个或多个成员。
SADD myset "apple" "banana" "cherry"
(integer) 3 -
SMEMBERS key
返回集合的所有成员。
SMEMBERS myset
1) "apple"
2) "cherry"
3) "banana" -
SREM key member [member ...]
从集合中移除一个或多个成员。
SREM myset "banana"
(integer) 1 -
SISMEMBER key member
如果member是集合的成员,则返回 1,否则返回 0。
SISMEMBER myset "apple"
(integer) 1
SISMEMBER myset "grape"
(integer) 0
5. 有序集合 (Sorted Sets)
有序集合是唯一的字符串集合,其中每个成员都关联一个分数。成员按其分数排序。
-
ZADD key score member [score member ...]
向有序集合添加一个或多个成员,如果它们已存在,则更新其分数。
ZADD leaderboard 100 "Alice" 150 "Bob" 75 "Charlie"
(integer) 3 -
ZRANGE key start stop [WITHSCORES]
从有序集合返回一个成员范围,按分数排序。WITHSCORES包含输出中的分数。
ZRANGE leaderboard 0 -1 WITHSCORES
1) "Charlie"
2) "75"
3) "Alice"
4) "100"
5) "Bob"
6) "150" -
ZREM key member [member ...]
从有序集合中移除一个或多个成员。
ZREM leaderboard "Charlie"
(integer) 1 -
ZSCORE key member
返回有序集合中成员的分数。
ZSCORE leaderboard "Alice"
"100"
键管理命令
这些命令适用于所有键,无论其数据类型如何。
-
KEYS pattern
查找所有匹配给定模式的键。
注意:在大型数据库中,KEYS命令可能会阻塞服务器很长时间,尤其是在生产环境中。建议使用SCAN命令。
KEYS *
1) "leaderboard"
2) "myset"
3) "user:1"
4) "greeting"
5) "counter" -
EXISTS key [key ...]
返回存在的键的数量。
EXISTS mykey
(integer) 0
EXISTS counter
(integer) 1 -
EXPIRE key seconds
为键设置一个超时。超时后,键将自动删除。
SET tempkey "will expire"
OK
EXPIRE tempkey 60
(integer) 1 -
TTL key
返回键的剩余生存时间(秒)。如果键不存在,返回 -2;如果键存在但没有关联的过期时间,返回 -1。
TTL tempkey
(integer) 55 -
TYPE key
返回存储在键中的值的类型(例如string、hash、list、set、zset)。
TYPE counter
string
TYPE user:1
hash -
RENAME oldkey newkey
重命名一个键。
SET oldname "value"
OK
RENAME oldname newname
OK
GET newname
"value"
服务器命令
这些命令提供有关 Redis 服务器的信息或执行管理任务。
-
INFO [section]
返回有关服务器的信息和统计数据。常见部分包括server、clients、memory、persistence、stats、replication、cpu、commandstats、cluster、keyspace。
INFO memory
# Memory
used_memory:1048576
used_memory_human:1.00M
... -
MONITOR
实时流式传输 Redis 服务器处理的每个命令。
MONITOR
1678886400.123456 [0 127.0.0.1:54321] "GET" "mykey" -
FLUSHDB
删除当前选定数据库中的所有键。
注意:此命令会永久删除数据。
FLUSHDB
OK -
FLUSHALL
删除 Redis 服务器上所有数据库中的所有键。
注意:此命令会永久删除所有数据库中的所有数据。
FLUSHALL
OK
结论
redis-cli 是一个功能强大且多功能的工具,用于管理和与 Redis 实例交互。通过掌握本指南中介绍的命令,您可以有效地存储、检索和操作数据,以及监控和维护您的 Redis 服务器。始终谨慎使用 FLUSHDB 和 FLUSHALL 等破坏性命令,并在生产环境中使用 SCAN 命令代替 KEYS 命令以避免性能问题。