• iv017-Redis缓存过期淘汰策略


    1.Redis内存满了怎么办?

    1.1查看Redis最大占用内存

    打开redis配置文件,设置maxmemory参数,maxmemory是bytes字节类型,注意转换。

    1.2redis默认内存多少可以用?

    如果不设置最大内存大小或者最大内存大小为0,在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存。

    1.3一般生产上如何配置

    一般推荐Redis设置内存为最大物理内存的四分之三,也就是0.75

    1.4如何修改redis内存设置

    • 通过修改文件配置:redis.conf maxmemory 123456
    • 通过命令修改:config set maxmemory 123456

    1.5说明命令查看redis内存使用情况

    info memory

    1.6redis内存使用超出了设置的最大值会怎样

    没有加上过期时间就会出现:OOM command not allowed when used memory > 'maxmemory'

    2.redis缓存淘汰策略

    2.1redis过期键的删除策略,三种不同的删除策略

    • 定时删除:对CPU不友好,用处理器性能换取存储空间(拿时间换空间)
    • 惰性删除:对memory不友好,用存储空间来换取处理器性能(拿空间换时间)
    • 定期删除(上面两种方案都走极端):
      定期删除策略是前两种策略的折中:
      • 定期删除策略每隔一段时间执行一次删除过期键操作,并通过限制删除操作执行的时长和频率来减少操作对CPU时间的影响。
      • 周期性轮询redis库中的时效性数据,采用随机抽取的策略,利用过期数据占比的方式控制删除频度。
      • 特点一:CPU性能占用设置有峰值,检测频度可自定义设置
      • 特点二:内存压力不是很大,长期占用内存的冷数据会被持续清理
        总结:周期性抽查存储空间(随机抽查,重点抽查)

    定期删除策略的难点是确定删除操作执行的时长和频率:如果删除操作执行得太频繁,或者执行的时间太长,定期删除策略就会退化成定时删除策略,以至于将CPU时间过多地消耗在删除过期键上面。如果删除操作执行得太少,或者执行的时间太短,定期删除策略又会和惰性删除束略一样,出现浪费内存的情况。因此,如果采用定期删除策略的话,服务器必须根据情况,合理地设置删除操作的执行时长和执行频率。

    2.2内存淘汰策略

    过期键删除策略中,定时删除和惰性删除处于两个极端,通常采用定期删除策略,由于定期删除策略采取周期性随机抽查的方式扫面并删除过期的键,存在没有被抽查到的过期键存储在内存中,此时需要一种兜底方案,以解决内存不够时候,redis释放内存的机制(内存淘汰策略)

    • noeviction:不会驱逐任何key
    • allkeys-lru:对所有key使用LRU算法进行删除
    • volatile-lru:对所有设置了过期时间的key使用LRU算法进行删除
    • allkeys-random:对所有key随机删除
    • volatile-random:对所有设置了过期时间的key随机删除
    • volatile-ttl:删除马上要过期的key
    • allkeys-lfu:对所有key使用LFU算法进行删除
    • volatile-lfu:对所有设置了过期时间的key使用LFU算法进行删除

    2.3如何配置修改

    命令:config set maxmemory-policy allkeys-lru
    配置文件:maxmemory-policy allkeys-lru

  • 相关阅读:
    包管理器Bower使用手冊之中的一个
    开机就提示“请安装TCP/IP协议,error=10106”的解决的方法
    Apache Thrift的简单使用
    Python机器学习实战<一>:环境的配置
    数据库期末考试复习题 第二�
    数据集成之主数据管理(一)基础概念篇
    Cocos2d-x开发中C++内存管理
    html中#include file的使用方法
    网页的背景图片代码
    TEST
  • 原文地址:https://www.cnblogs.com/everyingo/p/14565094.html
Copyright © 2020-2023  润新知