Redis
内存查看
Redis默认能用多少内存?
使用
config get maxmemory
命令查看
- 在64位操作系统默认可以飙到你的内存大小,0代表你的物理内存
- 在32位操作系统下,默认3G内存
通过
config set maxmemory
设置内存值内存不够报OOM异常
淘汰策略
立即删除
对CPU不太好,用处理器性能换内存(时间换空间)
惰性删除
对memory不太好,用空间换时间
定期删除
定期删除是前两种策略的折中
定期删除策略每隔一段时间执行一次删除过期键操作,并通过限制删除操作执行时长和频率来减少删除对CPU造成的影响;
- CPU性能占用设置有峰值,检测频率可以自定义
- 内存压力不是很大,长期占用内存的冷数据会被清理
举例
redis默认每隔100ms检查是否有过期key,有过期key则删除;
并不是删除所有的key而是随机抽查;
我们应该合理的根据需求设置删除操作的
执行时长
和执行频率
八种缓存淘汰策略
LRU
最近最少使用页面算法:淘汰最长时间未被使用的的页面
LFU
最近最不常用页面置换算法:淘汰一定时期内被访问最少次数的页面
例子
某次Time10分钟,如果每一分钟进行一次调页,主存块为3,页走向2 1 2 1 2 3 4假设页面到4发生缺页中断;
按照LRU淘汰页面1,按照LFU淘汰3
你平时用哪一种?
- 所有的key都是最近最经常使用的:对所有key使用LRU
- 所有的key访问概率接近:对所有的key随机删除
- 如果对于数据有足够的了解:可以删除马上要过期的