zoukankan      html  css  js  c++  java
  • Redis缓存篇(三)缓存污染

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

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

    缓存污染

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

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

    从能否解决缓存污染这一维度来分析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策略

    参考资料

  • 相关阅读:
    eclipse
    ORA00904:标识符无效,preparedstatement
    mysql 创建用户
    web 默认servlet
    https tomat
    gzip
    sftp 上传文件
    jquery dwrutil confilit
    xmlbeans读写xml文件
    敏捷开发“松结对编程”实践大型团队篇
  • 原文地址:https://www.cnblogs.com/liang24/p/14210542.html
Copyright © 2011-2022 走看看