Redis 常用指令全集:redis-cli 实战速查手册
2026/7/29 23:41:18 网站建设 项目流程

Redis 是一款高性能的键值对内存数据库,广泛应用于缓存、消息队列、排行榜、实时统计等场景。无论是本地开发调试、生产环境运维,还是集群性能排查,命令行工具redis-cli都是最直接高效的操作方式。本文整理了 Redis 最常用的指令集,涵盖命令行连接、字符串、哈希、列表、集合、有序集合、键管理、事务、持久化、性能监控等高频场景,每条指令均附带实战示例,助你快速完成数据操作与故障排查。


1. 命令行连接与认证

本地连接

# 连接本地默认 Redis(端口 6379,无密码) redis-cli 连接后测试连通性 127.0.0.1:6379> PING PONG

远程连接

# 连接指定主机和端口 redis-cli -h 192.168.1.100 -p 6379 连接时直接指定密码 redis-cli -h 192.168.1.100 -p 6379 -a your_password 连接后手动认证(更安全,密码不会出现在进程列表) redis-cli -h 192.168.1.100 -p 6379 192.168.1.100:6379> AUTH your_password OK

指定数据库

# Redis 默认 16 个数据库(索引 0-15),连接时指定 redis-cli -n 1 或在连接后切换 127.0.0.1:6379> SELECT 1 OK 127.0.0.1:6379[1]>

SSL 连接(Redis 6+)

# 使用 SSL/TLS 连接(需要 Redis 服务端开启 tls-port) redis-cli --tls -h redis.example.com -p 6380

2. 字符串操作(String)

# 设置键值(键不存在则创建,存在则覆盖) SET username "Alice" 设置键值并指定过期时间(单位:秒,常用于缓存) SET temp_token "abc123" EX 300 仅当键不存在时才设置(分布式锁常用) SETNX lock:order:1001 "locked" 获取值 GET username 批量设置(减少网络往返) MSET key1 "val1" key2 "val2" key3 "val3" 批量获取 MGET key1 key2 key3 数值自增(计数器场景,如点赞数) INCR view_count 指定步长自增 INCRBY view_count 5 数值自减 DECR stock DECRBY stock 10 追加内容到已有值末尾 APPEND username "_admin" 获取字符串长度 STRLEN username

3. 哈希操作(Hash)

# 设置哈希字段(存储对象属性,如用户信息) HSET user:1001 name "Bob" HSET user:1001 age 25 HSET user:1001 city "Beijing" 简写:同时设置多个字段 HMSET user:1001 name "Bob" age 25 city "Beijing" 获取单个字段 HGET user:1001 name 获取多个字段 HMGET user:1001 name age 获取所有字段和值(小对象适用,大对象慎用) HGETALL user:1001 获取所有字段名 HKEYS user:1001 获取所有字段值 HVALS user:1001 删除指定字段 HDEL user:1001 city 判断字段是否存在 HEXISTS user:1001 name 获取字段数量 HLEN user:1001 字段值自增(如用户积分) HINCRBY user:1001 score 10

4. 列表操作(List)

# 从左侧插入(常用于最新消息队列) LPUSH msg_queue "msg_1" LPUSH msg_queue "msg_2" 从右侧插入(常用于任务队列) RPUSH task_queue "task_a" RPUSH task_queue "task_b" 查看列表范围(0 到 -1 表示全部) LRANGE msg_queue 0 -1 查看前 10 条 LRANGE msg_queue 0 9 获取列表长度 LLEN msg_queue 从左侧弹出(消费消息) LPOP msg_queue 从右侧弹出 RPOP task_queue 阻塞式左侧弹出(队列空时等待,避免空轮询) BLPOP msg_queue 30 按索引获取元素 LINDEX msg_queue 0 删除指定元素(count=0 删除全部,count>0 从左删,count<0 从右删) LREM msg_queue 0 "msg_1" 截取保留指定范围(其余删除) LTRIM msg_queue 0 99

5. 集合操作(Set)

# 添加成员(自动去重) SADD tags "redis" SADD tags "mysql" SADD tags "redis" # 重复添加无效,返回 0 查看所有成员 SMEMBERS tags 判断成员是否存在 SISMEMBER tags "redis" 获取成员数量 SCARD tags 随机获取一个成员(抽奖场景) SRANDMEMBER tags 随机移除并返回一个成员 SPOP tags 移除指定成员 SREM tags "mysql" 交集(共同关注) SINTER user:1001:follows user:1002:follows 并集 SUNION set_a set_b 差集 SDIFF set_a set_b

6. 有序集合操作(Sorted Set)

# 添加成员并指定分数(排行榜核心数据结构) ZADD leaderboard 100 "player_A" ZADD leaderboard 150 "player_B" ZADD leaderboard 120 "player_C" 按分数升序查看排名(0 到 -1 为全部) ZRANGE leaderboard 0 -1 WITHSCORES 按分数降序查看(排行榜 Top N 常用) ZREVRANGE leaderboard 0 9 WITHSCORES 按分数范围查询(如查询 100-200 分的玩家) ZRANGEBYSCORE leaderboard 100 200 WITHSCORES 获取成员分数 ZSCORE leaderboard "player_A" 获取成员排名(升序,从 0 开始) ZRANK leaderboard "player_A" 获取成员排名(降序,Top 榜常用) ZREVRANK leaderboard "player_A" 移除成员 ZREM leaderboard "player_A" 成员分数自增(如实时更新积分) ZINCRBY leaderboard 10 "player_B" 获取成员总数 ZCARD leaderboard 按排名范围删除(只保留前 100 名) ZREMRANGEBYRANK leaderboard 0 -101

7. 键管理

# 查看键是否存在 EXISTS username 删除键 DEL username 设置过期时间(单位:秒,到期自动删除) EXPIRE session:abc123 3600 查看剩余过期时间(-1 表示永不过期,-2 表示已过期) TTL session:abc123 取消过期时间(设为永久) PERSIST session:abc123 查看键的数据类型 TYPE user:1001 重命名键 RENAME old_key new_key 模糊查询键(生产环境慎用,大数据量会阻塞) KEYS user:* 安全遍历键(生产环境推荐,游标式分批扫描) SCAN 0 MATCH user:* COUNT 100 SCAN 17 MATCH user:* COUNT 100 随机返回一个键 RANDOMKEY

8. 事务操作

# 开启事务 MULTI 在事务中排队命令 SET balance:1001 1000 DECRBY balance:1001 100 INCRBY balance:1002 100 执行事务 EXEC 放弃事务(清空队列,不执行) DISCARD 乐观锁:监视键,如果被其他客户端修改则事务失败 WATCH balance:1001 MULTI DECRBY balance:1001 50 EXEC 如果 balance:1001 在 WATCH 后被修改,EXEC 返回 nil,事务不执行 取消对所有键的监视 UNWATCH

9. 持久化

# 手动触发 RDB 快照保存(阻塞主进程,数据量大时慎用) SAVE 后台异步触发 RDB 快照(推荐,不阻塞客户端) BGSAVE 查看最后一次 RDB 成功时间(Unix 时间戳) LASTSAVE 手动触发 AOF 重写(压缩 AOF 文件体积) BGREWRITEAOF 查看持久化配置 CONFIG GET save CONFIG GET appendonly CONFIG GET appendfsync

10. 性能与监控

# 查看 Redis 服务器信息(内存、CPU、连接数、命中率等) INFO 查看内存详细信息 INFO memory 查看客户端连接列表 CLIENT LIST 关闭指定客户端连接 CLIENT KILL 192.168.1.50:52341 查看慢查询日志(排查性能瓶颈) SLOWLOG GET 10 清空慢查询日志 SLOWLOG RESET 实时监控所有命令(生产环境慎用,性能开销大) MONITOR 查看当前数据库键总数 DBSIZE 查看 Redis 当前配置项 CONFIG GET maxmemory CONFIG GET maxclients 动态修改配置(重启失效,永久生效需改配置文件) CONFIG SET maxmemory 2gb 清空当前数据库(危险操作,生产环境务必确认) FLUSHDB 清空所有数据库(极度危险,通常禁用) FLUSHALL

11. 常见故障排查流程

1. 连接不上 Redis

# 测试网络连通性 redis-cli -h <host> -p <port> PING 检查 Redis 是否运行 ps aux | grep redis-server 检查防火墙和 bind 配置(redis.conf 中 bind 127.0.0.1 会拒绝远程连接) 若需远程访问,修改 redis.conf:bind 0.0.0.0 并重启 检查密码是否正确 redis-cli -h <host> -p <port> AUTH wrong_password 返回:(error) ERR invalid password

2. 内存占用过高 / OOM

# 查看内存使用详情 INFO memory 查看内存占用最大的键(抽样分析,找出大 Key) redis-cli --bigkeys 查看内存碎片率 INFO memory | grep mem_fragmentation_ratio 设置内存上限并配置淘汰策略(redis.conf 或动态配置) CONFIG SET maxmemory 4gb CONFIG SET maxmemory-policy allkeys-lru

3. 性能变慢

# 查看慢查询(默认超过 10ms 记录) SLOWLOG GET 20 查看当前连接数是否达到上限 INFO clients 查看每秒处理的命令数 INFO stats | grep instantaneous_ops_per_sec 检查是否有阻塞命令(如 KEYS *、大量 HGETALL 大 Hash)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询