java reids 如何处理比较大的key
首先用命令看一下key值占用的资源:
MEMORY USAGE key
🔹 扫描大 Key(生产慎用)
redis-cli --bigkeys
2️⃣ Scan + 统计(安全)
SCAN 0 COUNT 1000
四、如何处理大 Key(重点 ⭐⭐⭐)
1️⃣ 拆分 Key(最推荐)
❌ 大 Key
user:1000 → 一个 Hash 存 20w 字段
✅ 拆分
user:1000:base
user:1000:ext
user:1000:order:1
user:1000:order:2
2️⃣ 拆分集合(分页 / 分片)
List / ZSet
order:list:1
order:list:2
3️⃣ 压缩 / 精简数据
JSON → 字段化
去掉冗余字段
压缩(Snappy / GZIP,权衡 CPU)
4️⃣ 删除大 Key 的正确姿势(必考 ⚠️)
❌ 错误
DEL bigkey
✅ 正确
UNLINK bigkey
UNLINK:异步删除,不阻塞主线程(Redis 4.0+)
5️⃣ 分批删除集合
HSCAN key 0 COUNT 1000
HDEL key field1 field2 ...
6️⃣ 设置合理过期时间
EXPIRE key 3600
避免永久大 Key。
7️⃣ 热点大 Key(高并发)
解决思路:
本地缓存
多副本 key
Lua 合并请求
限流