Redis 常用指令全集:redis-cli 实战速查手册

Redis 常用指令全集:redis-cli 实战速查手册
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 63802. 字符串操作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 username3. 哈希操作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 104. 列表操作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 删除指定元素count0 删除全部count0 从左删count0 从右删 LREM msg_queue 0 msg_1 截取保留指定范围其余删除 LTRIM msg_queue 0 995. 集合操作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_b6. 有序集合操作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 -1017. 键管理# 查看键是否存在 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 随机返回一个键 RANDOMKEY8. 事务操作# 开启事务 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事务不执行 取消对所有键的监视 UNWATCH9. 持久化# 手动触发 RDB 快照保存阻塞主进程数据量大时慎用 SAVE 后台异步触发 RDB 快照推荐不阻塞客户端 BGSAVE 查看最后一次 RDB 成功时间Unix 时间戳 LASTSAVE 手动触发 AOF 重写压缩 AOF 文件体积 BGREWRITEAOF 查看持久化配置 CONFIG GET save CONFIG GET appendonly CONFIG GET appendfsync10. 性能与监控# 查看 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 清空所有数据库极度危险通常禁用 FLUSHALL11. 常见故障排查流程1. 连接不上 Redis# 测试网络连通性 redis-cli -h host -p port PING 检查 Redis 是否运行 ps aux | grep redis-server 检查防火墙和 bind 配置redis.conf 中 bind 127.0.0.1 会拒绝远程连接 若需远程访问修改 redis.confbind 0.0.0.0 并重启 检查密码是否正确 redis-cli -h host -p port AUTH wrong_password 返回(error) ERR invalid password2. 内存占用过高 / OOM# 查看内存使用详情 INFO memory 查看内存占用最大的键抽样分析找出大 Key redis-cli --bigkeys 查看内存碎片率 INFO memory | grep mem_fragmentation_ratio 设置内存上限并配置淘汰策略redis.conf 或动态配置 CONFIG SET maxmemory 4gb CONFIG SET maxmemory-policy allkeys-lru3. 性能变慢# 查看慢查询默认超过 10ms 记录 SLOWLOG GET 20 查看当前连接数是否达到上限 INFO clients 查看每秒处理的命令数 INFO stats | grep instantaneous_ops_per_sec 检查是否有阻塞命令如 KEYS *、大量 HGETALL 大 Hash