美文网首页
36. 失效策略——缓存过期都有哪些策略

36. 失效策略——缓存过期都有哪些策略

作者: 木叶苍蓝 | 来源:发表于2023-07-21 17:32 被阅读0次

    缓存使用的是内存资源,内存资源要用有限的服务器资源支撑更多的业务。
    必须删除掉访问频率不高的缓存,为新的缓存腾出内存空间

    页面置换算法

    缓存技术对应到操作系统中,就是缓存页面的调度算法
    在操作系统中,文件的读取会先分配一定的页面空间 Page

    • 查询空间是否有该页面的缓存,如果有的话,则直接拿出来
    • 否则就先查询,页面空间没有满,把新页面缓存起来
    • 如果页面空间满了,删除部分页面
    常见的过期策略
    • FIFO (First In First Out, 先进先出)
      根据缓存被存储的时间,离当前最远的数据优先被淘汰
    • LRU (Least Recently Used, 最近最少使用)
      根据最近被使用的时间,离当前最远的数据优先被淘汰
    • LFU (Least Frequently Used, 最不经常使用)
      在一段时间内,缓存数据被使用次数最少的会被淘汰

    内存淘汰策略

    当 Redis 节点分配的内存使用到达最大值以后,Redis 会启动内存淘汰策略

    • noeviction:这时默认的策略,对于写请求会拒绝服务,直接返回错误,可以保证数据不丢失。
    • allkeys-lru:这种策略操作的范围是所有 key,使用 LRU 算法进行缓冲淘汰。
    • volatile-lru:这种策略操作的范围是设置了过期时间的 key,使用 LRU 算法进行淘汰。
    • allkeys-random:这种策略操作的范围是设置了过期时间的key,会进行随机淘汰。
    • volatile-random:这种策略操作的范围是设置了过期时间的 key,会进行随机淘汰。
    • volatile-ttl:这种策略操作的范围是设置了过期时间的 key,根据 key 的过期时间进行淘汰,越早过期的越优先被淘汰。

    缓存过期策略

    • 内存淘汰是缓存服务层面的操作
    • 过期策略是具体缓存数据何时失效

    Redis 是 key-value 数据库,可以设置缓存 key 的过期时间
    过期策略——当 Redis 中缓存的 key 过期了, Redis 如何处理

    • 定时过期
      为每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除
      但需要耗费大量的 cpu 资源区处理过期的数据,可能影响缓存服务的性能
    • 惰性过期
      只有当访问一个 key 时,才会判断该 key 是否已过期,并且进行删除操作
      极端情况下,缓存中出现大量的过期 key 无法被删除
    • 定期过期
      添加一个即将过期的缓存字典,每隔一定的时间,会扫描一定数量的key,并清除其中已过期的 key

    如何避免大量主键在同一时间同时失效造成数据库压力过大的情况

    相关文章

      网友评论

          本文标题:36. 失效策略——缓存过期都有哪些策略

          本文链接:https://www.haomeiwen.com/subject/hpbnudtx.html