• Redis的淘汰策略


    Redis是一种基于内存的高性能键值存储数据库,由于内存资源有限,当Redis中的数据量增大时,会导致内存占用过多,可能会影响系统的性能和稳定性。为了解决这个问题,Redis提供了一些淘汰策略来自动清理不再使用的key,以释放内存空间。

    查看redis.conf配置文件,里面说明了redis的8种淘汰策略,内容如下:



    以下是Redis的淘汰策略:

    1. Noeviction(默认): 当内存不足以容纳新写入数据时,新写入操作会报错,表示写入失败。这种策略不会删除任何已有的key,也不会释放任何内存空间。

    2. Allkeys-lru(最近最少使用策略: 当内存不足以容纳新写入数据时,从所有key中选择最近最少使用的key进行删除,以释放内存空间。

    3. Volatile-lru(带过期时间的最近最少使用策略: 当内存不足以容纳新写入数据时,从设置了过期时间的key中选择最近最少使用的key进行删除,以释放内存空间。

    4. Allkeys-random: 当内存不足以容纳新写入数据时,从所有key中随机选择一个进行删除,以释放内存空间。

    5. Volatile-random: 当内存不足以容纳新写入数据时,从设置了过期时间的key中随机选择一个进行删除,以释放内存空间。

    6. Volatile-ttl(带过期时间的TTL策略): 当内存不足以容纳新写入数据时,从设置了过期时间的key中选择剩余生存时间(Time To Live)最短的key进行删除,越早过期的键优先被淘汰,以释放内存空间。

    7. volatile-lfu(带过期时间的最不经常使用策略):根据使用频率和剩余生存时间来决定淘汰顺序,使用频率低且剩余生存时间短的键优先被淘汰。

    8. allkeys-lfu(最不经常使用策略):根据使用频率来决定淘汰顺序,使用频率低的键优先被淘汰。


    需要注意的是,以上淘汰策略只在Redis的内存使用达到一定阈值时才会触发。可以通过maxmemory参数来设置Redis的最大内存限制,当内存占用超过这个限制时,Redis会根据淘汰策略自动清理不再使用的key。
    在实际应用中,需要根据业务需求和系统配置来选择合适的淘汰策略。例如,如果系统中有很多临时数据,可以选择Volatile-lru或Volatile-ttl策略;如果希望保留最常用的数据,可以选择Allkeys-lru策略。


  • 相关阅读:
    基于weixin小程序新生报到系统的设计
    从开店营销到智能化私域运营,有赞发布人工智能引擎Jarvis
    【Redis】解决全局唯一 id 问题
    ThingsBoard处理设备上报的属性并转换为可读属性
    Linux中断系统
    简述《华为数据之道》
    Leetcode 137. 只出现一次的数字 II
    为什么postman不会有跨域问题
    表单元素——下拉列表
    flutter_学习记录_02底部 Tab 切换保持页面状态的几种方法
  • 原文地址:https://blog.csdn.net/m0_62006803/article/details/134041573