美文网首页
Redis缓存淘汰策略

Redis缓存淘汰策略

作者: 学好该死的程序 | 来源:发表于2019-01-20 23:42 被阅读8次

    为什么会有淘汰?

    Redis可以看作是一个内存数据库,可以通过Maxmemory指令配置Redis的数据集使用指定量的内存。设置maxmemory为0,则表示无限制(这是64位系统的默认行为,而32位系统使用3GB内隐记忆极限)。

    maxmemory 100mb
    

    当内存使用达到maxmemory极限时,需要使用某种淘汰算法来决定清理掉哪些数据,以保证新数据的存入。

    常用的淘汰算法

    • FIFO:First In First Out,先进先出。判断被存储的时间,离目前最远的数据优先被淘汰。
    • LRU:Least Recently Used,最近最少使用。判断最近被使用的时间,目前最远的数据优先被淘汰。
    • LFU:Least Frequently Used,最不经常使用。在一段时间内,数据被使用次数最少的,优先被淘汰。

    Redis提供的淘汰策略

    1. noeviction:达到内存限额后返回错误,客户尝试可以导致更多内存使用的命令(大部分写命令,但DEL和一些例外)
    2. allkeys-lru:为了给新增加的数据腾出空间,驱逐键先试图移除一部分最近使用较少的(LRC)。
    3. volatile-lru:为了给新增加的数据腾出空间,驱逐键先试图移除一部分最近使用较少的(LRC),但只限于过期设置键。
    4. allkeys-random: 为了给新增加的数据腾出空间,驱逐任意键
    5. volatile-random: 为了给新增加的数据腾出空间,驱逐任意键,但只限于有过期设置的驱逐键。
    6. volatile-ttl: 为了给新增加的数据腾出空间,驱逐键只有秘钥过期设置,并且首先尝试缩短存活时间的驱逐键

    相关文章

      网友评论

          本文标题:Redis缓存淘汰策略

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