系列导读:本篇将深入讲解 Redis 内存管理和淘汰策略,优化内存使用。
文章目录
一、内存管理
1.1 查看内存使用
bash
# 查看内存信息
INFO memory
# 关键指标
used_memory: 已使用内存
used_memory_peak: 内存峰值
used_memory_rss: 系统分配内存
mem_fragmentation_ratio: 内存碎片率
1.2 内存配置
conf
# redis.conf
# 最大内存限制
maxmemory 2gb
# 内存淘汰策略
maxmemory-policy allkeys-lru
二、淘汰策略
2.1 策略列表
| 策略 | 说明 |
|---|---|
| noeviction | 不淘汰,内存满时返回错误 |
| allkeys-lru | 淘汰最久未使用的key |
| volatile-lru | 淘汰设置了过期时间且最久未使用的key |
| allkeys-lfu | 淘汰使用频率最低的key |
| volatile-lfu | 淘汰设置了过期时间且使用频率最低的key |
| allkeys-random | 随机淘汰key |
| volatile-random | 随机淘汰设置了过期时间的key |
| volatile-ttl | 淘汰即将过期的key |
2.2 策略选择
缓存场景 → allkeys-lru
热点数据 → allkeys-lfu
有过期时间 → volatile-lru
不能丢数据 → noeviction
三、内存优化
3.1 数据结构优化
bash
# 使用Hash替代多个String
# 差:
SET user:1001:name "张三"
SET user:1001:age "25"
# 好:
HMSET user:1001 name "张三" age 25
3.2 编码优化
conf
# redis.conf
# Hash优化
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
# List优化
list-max-ziplist-size -2
# Set优化
set-max-intset-entries 512
# ZSet优化
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
3.3 清理内存
bash
# 清空数据库
FLUSHDB # 当前库
FLUSHALL # 所有库
# 异步清空
FLUSHDB ASYNC
FLUSHALL ASYNC
总结
本文我们学习了:
✅ 内存查看 :INFO memory
✅ 淘汰策略 :8种策略选择
✅ 内存优化:数据结构、编码优化
下篇预告 :Redis 从入门到精通(十五):安全配置与性能优化
作者 :刘~浪地球
系列 :Redis 从入门到精通(十四)
更新时间:2026-04-08