Redis 超全常用命令手册

Redis 超全常用命令手册 本文汇总 Redis日常开发、面试、运维高频命令涵盖 5 大基础数据类型、高级数据类型、事务、发布订阅、内存运维、淘汰回收全套命令。所有命令均为线上高频使用剔除冷门废指令适合后端开发者直接收藏、速查、面试背诵。一、Redis 通用基础命令全局通用1.1 服务连接与基础操作# 远程连接 Redis redis-cli -h 127.0.0.1 -p 6379 -a 密码 # 切换数据库默认16个库 0~15 SELECT 1 # 查看当前库所有key线上禁止阻塞主线程 KEYS * # 模糊匹配key KEYS user:* # 查看当前库key总数 DBSIZE # 清空当前数据库异步安全版 FLUSHDB ASYNC # 清空所有数据库谨慎使用 FLUSHALL ASYNC # 查看 Redis 整体信息 INFO # 查看内存信息、淘汰、过期统计 INFO memory INFO stats # 动态查询配置 CONFIG GET maxmemory CONFIG GET maxmemory-policy # 动态修改配置无需重启 CONFIG SET maxmemory 6GB CONFIG SET maxmemory-policy allkeys-lfu # 退出客户端 exit1.2 Key 通用操作所有数据类型通用# 判断key是否存在 1存在 0不存在 EXISTS key # 删除key支持批量 DEL key1 key2 # 设置过期时间秒 / 毫秒 EXPIRE key 3600 PEXPIRE key 3000 # 查看剩余过期时间 # -1 永久有效 / -2 已过期删除 TTL key # 移除过期时间转为永久key PERSIST key # 查看key数据类型 TYPE key # 重命名key RENAME old_key new_key # 安全遍历key线上替代 KEYS *非阻塞 SCAN 0 MATCH user:* COUNT 10 线上核心禁忌KEYS *遍历全量 key 会阻塞主线程生产环境一律使用SCAN二、五大基础数据类型高频命令2.1 String 字符串最常用缓存、计数器、分布式锁# 基础设置/获取 SET name zhangsan GET name # 带过期时间设置常用缓存 SET token 123456 EX 3600 # 批量操作 MSET k1 v1 k2 v2 k3 v3 MGET k1 k2 k3 # 字符串追加 APPEND name _dev # 获取字符串长度 STRLEN name # 数字自增/自减原子操作秒杀、计数器核心 INCR num INCRBY num 10 DECR num DECRBY num 5 # 字符串截取、覆盖 GETRANGE key 0 3 SETRANGE key 0 test2.2 Hash 哈希存储对象用户、商品、配置# 单个字段设置/获取 HSET user:1 name zhangsan age 25 HGET user:1 name # 批量字段操作 HMSET user:2 id 2 sex man age 22 HMGET user:2 id age sex # 获取对象所有字段/所有值 HGETALL user:1 HKEYS user:1 HVALS user:1 # 字段是否存在 HEXISTS user:1 name # 删除指定字段 HDEL user:1 sex # 哈希字段自增 HINCRBY user:1 age 1 # 统计字段数量 HLEN user:12.3 List 列表双向链表消息队列、栈、列表数据# 左插头部、右插尾部 LPUSH list a b c RPUSH list x y z # 左弹、右弹出队 LPOP list RPOP list # 根据索引取值 LINDEX list 0 # 列表范围查询-1代表最后一位 LRANGE list 0 -1 # 截取保留指定区间裁剪数据 LTRIM list 0 2 # 获取列表长度 LLEN list2.4 Set 集合无序去重签到、去重、交集差集# 添加元素 SADD set1 1 2 3 4 # 查询所有元素 SMEMBERS set1 # 判断元素是否存在 SISMEMBER set1 2 # 删除指定元素 SREM set1 4 # 集合元素总数 SCARD set1 # 集合运算 SINTER set1 set2 # 交集 SUNION set1 set2 # 并集 SDIFF set1 set2 # 差集2.5 ZSet 有序集合排序去重排行榜、延时队列、权重排序# 添加元素score 分数 member 成员 ZADD rank 95 user1 88 user2 100 user3 # 正序查询从小到大 ZRANGE rank 0 -1 WITHSCORES # 倒序查询从大到小排行榜常用 ZREVRANGE rank 0 -1 WITHSCORES # 根据分数区间查询 ZRANGEBYSCORE rank 80 100 # 查询排名 ZRANK rank user1 # 升序排名 ZREVRANK rank user3 # 降序排名 # 元素总数 ZCARD rank # 分数自增 ZINCRBY rank 5 user1 # 删除元素 ZREM rank user2三、Redis 高级数据类型命令面试/业务高频3.1 BitMap 位图签到、状态统计、布隆场景# 设置指定位的值 0/1 SETBIT sign:202607 0 1 # 获取指定位状态 GETBIT sign:202607 0 # 统计位图中1的数量签到天数 BITCOUNT sign:2026073.2 HyperLogLogUV 去重统计误差极小、极省内存# 添加访问用户 PFADD uv:home user1 user2 user3 user2 # 统计独立UV PFCOUNT uv:home # 合并多个统计集合 PFMERGE uv:total uv:home uv:list3.3 Geo 地理位置附近的人、距离计算# 添加地理位置经度、纬度、名称 GEOADD city 116.40 39.90 beijing 121.47 31.23 shanghai # 获取坐标 GEOPOS city beijing # 计算两地距离km/m GEODIST city beijing shanghai km # 查询指定范围内的地理位置 GEORADIUS city 116.40 39.90 200 km3.4 Stream 消息队列Redis5.0 持久化消息队列# 添加消息* 自动生成消息ID XADD mystream * name lisi age 20 # 查询所有消息 XRANGE mystream - # 消费最新消息 XREAD COUNT 2 STREAMS mystream $ # 创建消费组 XGROUP CREATE mystream group1 $四、事务、Lua、发布订阅4.1 Redis 事务MULTI/EXEC# 开启事务 MULTI # 批量命令入队 SET a 10 INCR a # 执行事务 EXEC # 放弃事务 DISCARD # 乐观锁监控事务期间key被修改则事务失败 WATCH a MULTI SET a 100 EXEC4.2 Lua 脚本保证多条命令原子性# 简单Lua脚本查询key值 EVAL return redis.call(GET,KEYS[1]) 1 name4.3 发布订阅# 订阅频道 SUBSCRIBE channel:msg # 发布消息 PUBLISH channel:msg hello_redis五、运维、内存、淘汰回收核心命令对应之前讲解的Redis 数据淘汰与内存回收知识点配套实操命令。# 查看key占用内存 MEMORY USAGE key # 手动释放空闲内存 MEMORY PURGE # 查看内存碎片、淘汰key、过期key统计 INFO memory INFO stats # 手动触发RDB持久化 BGSAVE # 手动触发AOF重写 BGREWRITEAOF # 开启自动内存碎片整理生产推荐 CONFIG SET activedefrag yes CONFIG SET active-defrag-threshold-lower 10六、生产环境避坑指南必看禁止使用 KEYS *全量遍历阻塞主线程大集群直接崩一律用SCAN禁止超大 Hash 执行 HGETALL批量拉取大数据阻塞服务改用HSCAN分页FLUSHALL/FLUSHDB 必加 ASYNC异步清空避免阻塞所有缓存务必设置过期时间配合内存淘汰策略避免内存溢出线上优先使用 LFU 策略allkeys-lfu比 LRU 更适配业务冷热数据七、总结1、Redis 命令核心分为通用 Key 操作、五大基础类型、高级类型、事务脚本、运维内存五大模块2、业务开发 90% 场景只需要掌握 String/Hash/List/Set/ZSet 五种基础类型3、线上运维重点掌握内存配置、淘汰策略、碎片整理、SCAN 遍历规避生产事故4、面试高频考点事务特性、Lua 原子性、内存淘汰策略、过期删除机制。 码字不易欢迎点赞、收藏、关注持续更新 Java 后端核心技术干货