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
# 退出客户端
exit
1.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 test
2.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:1
2.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 list
2.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:202607
3.2 HyperLogLog(UV 去重统计,误差极小、极省内存)
# 添加访问用户
PFADD uv:home user1 user2 user3 user2
# 统计独立UV
PFCOUNT uv:home
# 合并多个统计集合
PFMERGE uv:total uv:home uv:list
3.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 km
3.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
EXEC
4.2 Lua 脚本(保证多条命令原子性)
# 简单Lua脚本查询key值
EVAL "return redis.call('GET',KEYS[1])" 1 name
4.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 后端核心技术干货!
更多推荐




所有评论(0)