本文汇总 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 后端核心技术干货!

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐