旺仔小糖

redis-cli的使用 a month ago

redis
4157个字符
共有142人围观

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"
    
  • 退出交互模式: 输入 exitquit,或者按下 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 数据库。