首页 技术 正文
技术 2022年11月10日
0 收藏 918 点赞 2,809 浏览 779 个字

上一讲介绍了缓存满了,通过内存淘汰机制来淘汰掉数据。如果有的数据一直滞留在缓存中,但又没有应用使用,时间长了,就可能会占据大部分的缓存空间。

今天我们来学习一下缓存污染,以及如何解决缓存污染。

缓存污染

缓存污染,指留存在缓存中的数据,实际不会被再次访问了,但又占据了缓存空间。

要解决缓存污染的关键点是能识别出只访问一次或者访问次数很少的数据

从能否解决缓存污染这一维度来分析Redis的8种缓存淘汰策略:

  • noeviction策略:不会淘汰数据,解决不了。
  • volatile-ttl策略:给数据设置合理的过期时间。当缓存写满时,会淘汰剩余存活时间最短的数据,避免滞留在缓存中,造成污染。
  • volatile-random策略:随机选择数据,无法把不再访问的数据筛选出来,会造成缓存污染。
  • volatile-lru策略:LRU策略只考虑数据的访问时效,对只访问一次的数据,不能很快筛选出来。
  • volatile-lfu策略:LFU策略在LRU策略基础上进行了优化,筛选数据时优先筛选并淘汰访问次数少的数据。
  • allkeys-random策略:随机选择数据,无法把不再访问的数据筛选出来,会造成缓存污染。
  • allkeys-lru策略:LRU策略只考虑数据的访问时效,对只访问一次的数据,不能很快筛选出来。
  • allkeys-lfu策略:LFU策略在LRU策略基础上进行了优化,筛选数据时优先筛选并淘汰访问次数少的数据。

关于LRU和LFU算法的内容,点击查看系列的第2讲

总结

缓存淘汰策略 解决缓存污染
noeviction策略 不能
volatile-ttl策略
volatile-random策略 不能
volatile-lru策略 不能
volatile-lfu策略
allkeys-random策略 不能
allkeys-lru策略 不能
allkeys-lfu策略

参考资料

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,156
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,624
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,468
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,240
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,877
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,043