内存分配
最大内存控制:
maxmemory 最大内存阈值
maxmemory-poicy 到达阈值时的执行策略
内存压缩:
大小超过压缩范围,溢出后redis将自动将其转换为正常大小
过期数据的处理策略
- 主动处理(redis主动触发检测key是否过期),每秒执行10次。过程如下:
a.从具有过期时间的密钥中测试20个随机密钥。
b. 删除所有已过期的密钥
c. 如果超过25%的密钥已过期,则从a重新开始 - 被动处理:
每次访问key时,发现过期,直接清除,然后返回null。
数据恢复阶段,过期数据的过期策略
redis内存回收策略
LRU算法
least recently used:最近最少使用,根据数据的历史访问记录来进行淘汰。
注意:redis的lru并非完整的实现,因为完整的lru需要太多的内存。
LFU算法
least frequently used:根据数据的历史访问频率来淘汰数据。
核心思想:如果数据过去被访问多次,那么将来被访问的频率也更高。