Skip to content

内存管理

内存统计

查看内存

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-lruLRU淘汰有TTL的键
allkeys-lruLRU淘汰所有键
volatile-lfuLFU淘汰有TTL的键
allkeys-lfuLFU淘汰所有键
volatile-random随机淘汰有TTL的键
allkeys-random随机淘汰所有键
volatile-ttl淘汰TTL最小的

内存优化

1. 精简key

# 不好
user:1000000001:profile:name
# 好
u:1:profile:name

2. 合理使用类型

  • 小整数用整数编码
  • 短字符串用embstr

3. 压缩数据

redis
SET key ZIPSTRING value  # 使用压缩

面试考点

Q: 内存碎片怎么产生的?

  • 内存分配/释放产生碎片
  • bigkey导致碎片
  • 解决:重启或memory purge

Q: 如何排查bigkey?

redis
-- Redis 4.0+
redis-cli --bigkeys
-- 或
SCAN + MEMORY USAGE

最后更新: