Appearance
内存管理
内存统计
查看内存
redis
INFO memory
MEMORY STATS
MEMORY USAGE key关键指标
used_memory: 实际使用内存
used_memory_rss: 物理内存
mem_fragmentation_ratio: 碎片率内存淘汰策略
配置方式
redis
maxmemory 2gb
maxmemory-policy allkeys-lru策略列表
| 策略 | 说明 |
|---|---|
| noeviction | 不淘汰,返回错误 |
| volatile-lru | LRU淘汰有TTL的键 |
| allkeys-lru | LRU淘汰所有键 |
| volatile-lfu | LFU淘汰有TTL的键 |
| allkeys-lfu | LFU淘汰所有键 |
| volatile-random | 随机淘汰有TTL的键 |
| allkeys-random | 随机淘汰所有键 |
| volatile-ttl | 淘汰TTL最小的 |
内存优化
1. 精简key
# 不好
user:1000000001:profile:name
# 好
u:1:profile:name2. 合理使用类型
- 小整数用整数编码
- 短字符串用embstr
3. 压缩数据
redis
SET key ZIPSTRING value # 使用压缩面试考点
Q: 内存碎片怎么产生的?
- 内存分配/释放产生碎片
- bigkey导致碎片
- 解决:重启或memory purge
Q: 如何排查bigkey?
redis
-- Redis 4.0+
redis-cli --bigkeys
-- 或
SCAN + MEMORY USAGE