redis-cli的使用 a month ago
redis-cli
是 Redis 的命令行接口工具,它让你可以直接与 Redis 服务器交互,执行各种 Redis 命令。它非常强大,是 Redis 管理和开发中不可或缺的工具。
redis-cli
的基本用法
1. 连接到 Redis 服务器
默认情况下,redis-cli
会尝试连接到本地主机(127.0.0.1
)的默认 Redis 端口(6379
)。
连接到本地默认服务器:
redis-cli
连接成功后,你会看到类似
127.0.0.1:6379>
的提示符,这表示你已进入redis-cli
的交互模式。 * 连接到指定主机和端口:redis-cli -h <hostname_or_ip> -p <port>
示例: 连接到 IP 地址为
192.168.1.100
,端口为6380
的 Redis 服务器。redis-cli -h 192.168.1.100 -p 6380
- 使用密码连接(如果 Redis 服务器设置了密码):
bash redis-cli -h <hostname_or_ip> -p <port> -a <password>
示例:bash redis-cli -h 127.0.0.1 -p 6379 -a "myredispassword"
注意: 直接在命令行中暴露密码不安全。对于生产环境,你可能希望使用其他更安全的方式,例如通过配置文件或环境变量。 * 通过 URI 连接 (Redis 6.0+):
redis-cli -u redis://user:password@host:port/db_number
示例:
redis-cli -u redis://default:mypassword@127.0.0.1:6379/0
2. 交互模式
一旦连接成功,你就可以在
redis-cli
的提示符下直接输入 Redis 命令并按回车执行。127.0.0.1:6379> PING PONG 127.0.0.1:6379> SET mykey "Hello Redis" OK 127.0.0.1:6379> GET mykey "Hello Redis" 127.0.0.1:6379> LPUSH mylist "item1" "item2" "item3" (integer) 3 127.0.0.1:6379> LRANGE mylist 0 -1 1) "item3" 2) "item2" 3) "item1"
- 使用密码连接(如果 Redis 服务器设置了密码):
退出交互模式: 输入
exit
或quit
,或者按下Ctrl + D
。
3. 非交互模式(直接执行命令)
你也可以不进入交互模式,直接在命令行中执行单个 Redis 命令。
redis-cli -h <hostname_or_ip> -p <port> <Redis command> [arguments]
示例:
redis-cli GET mykey
redis-cli -h 192.168.1.100 -p 6380 SET anotherkey "This is a test" EX 60
这种模式常用于脚本中,方便自动化操作。
常用 redis-cli
命令和技巧
基本操作
PING
: 检查 Redis 服务器是否运行正常。SET <key> <value>
: 设置键值对。GET <key>
: 获取键的值。DEL <key> [key ...]
: 删除一个或多个键。EXISTS <key> [key ...]
: 检查键是否存在,返回存在的键的数量。KEYS <pattern>
: 查找所有符合给定模式的键。注意:在生产环境中慎用KEYS
命令,因为它会遍历所有键,可能导致服务器阻塞。KEYS *
: 获取所有键。KEYS user:*
: 获取所有以user:
开头的键。
EXPIRE <key> <seconds>
: 为键设置过期时间(秒)。TTL <key>
: 查看键的剩余过期时间(秒),-1 表示永不过期,-2 表示键不存在。
数据结构操作
Redis 支持多种数据结构:
- 字符串 (String):
SET
,GET
,INCR
,DECR
,APPEND
,GETRANGE
,SETEX
- 哈希 (Hash):
HSET
,HGET
,HGETALL
,HDEL
,HLEN
- 列表 (List):
LPUSH
,RPUSH
,LPOP
,RPOP
,LRANGE
,LLEN
- 集合 (Set):
SADD
,SMEMBERS
,SREM
,SISMEMBER
,SCARD
- 有序集合 (Sorted Set):
ZADD
,ZRANGE
,ZREM
,ZCARD
,ZSCORE
高级功能
- 发布/订阅 (Pub/Sub):
- 在一个终端:
SUBSCRIBE mychannel
- 在另一个终端:
PUBLISH mychannel "Hello subscribers"
- 在一个终端:
- 事务 (Transactions):
MULTI
,EXEC
,DISCARD
,WATCH
MULTI
: 开始一个事务。EXEC
: 执行所有队列中的命令。DISCARD
: 取消事务。
- LUA 脚本 (Scripting):
EVAL
,EVALSHA
redis-cli --eval <script_file.lua> <key_args> , <arg_args>
- 慢查询日志 (Slow Log):
SLOWLOG GET
,SLOWLOG RESET
,SLOWLOG LEN
- 服务器信息 (Server Info):
INFO
(获取服务器各种信息,如内存、客户端连接、持久化等) - 监视模式 (Monitor):
MONITOR
(实时打印 Redis 服务器接收到的所有命令)bash redis-cli MONITOR
注意:MONITOR
命令会影响性能,在生产环境中谨慎使用。 * 查找大键 (Find Big Keys):bash redis-cli --bigkeys
这会扫描整个键空间,找到最大的键,并统计不同数据类型的键数量和平均大小。在分析内存占用时非常有用。 - 扫描键 (Scan Keys):
bash redis-cli --scan --pattern "user:*"
与KEYS
相比,SCAN
命令是一种更安全的迭代键的方式,因为它不会阻塞服务器。它通过游标迭代,可以分批次获取数据。 你也可以在交互模式下手动使用SCAN <cursor> [MATCH <pattern>] [COUNT <count>]
。 —– ## 帮助信息 如果你忘记了某个命令的用法,可以在redis-cli
交互模式下使用HELP
命令: *HELP <command_name>
: 获取特定命令的帮助信息。 示例:HELP SET
*HELP @<category>
: 获取某个类别下的所有命令。 类别示例:@generic
,@string
,@list
,@set
,@hash
,@geo
,@stream
,@server
,@connection
等。 示例:HELP @string
—– ## 最佳实践 * 避免在生产环境中使用KEYS
命令:除非你非常清楚你在做什么,否则KEYS *
可能会阻塞你的 Redis 服务器很长时间。使用SCAN
代替。 * 错误处理:redis-cli
会直接显示命令的执行结果,包括错误信息。留意这些信息来调试问题。 * 安全:如果你的 Redis 实例需要认证,始终使用-a <password>
或-u
选项。避免在不安全的网络上直接暴露 Redis 端口。redis-cli
是一个非常强大的工具,通过熟练掌握它的用法,你可以高效地管理和调试你的 Redis 数据库。
- 下一篇: macos 通过用源码安装redis