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策略

    参考资料

  • 相关阅读:
    Django模板语言进阶
    ORM基础之ORM介绍和基础操作
    ORM关于表那些事
    ORM之基础操作进阶
    ORM基础之字段及其参数介绍
    AJAX初识(原生JS版AJAX和Jquery版AJAX)
    AJAX异步、sweetalert、Cookie和Session初识
    在一个千万级的数据库查寻中,如何提高查询效率?
    A fatal error has been detected by the Java Runtime Environment(jdk 1.6的一个BUG)
    外网映射工具地址
  • 原文地址:https://www.cnblogs.com/liang24/p/14210542.html
Copyright © 2011-2022 走看看