Redis: 内存回收

一、过期键删除策略

1、惰性删除

顾名思义并不是在TTL到期后就立即删除,而是在访问一个key的时候,检查该key的存活时间,如果已经过期才执行删除,并且删除的目标仅限于当前处理的键。

  • 优点:节约cpu性能,使用时发现过期键才删除。
  • 缺点:如果过期键不被访问,就不会被删除,会一直保留在内存中,存在内存泄漏的风险。

2、定时删除

创建一个定时器(timer),当将过期时立即对该键进行删除操作。

  • 优点:对内存友好,过期的键会立即删除。
  • 缺点:对CPU时间不友好,当某一时刻处在大量的键过期,那么CPU的大部分时间就会在处理删除过期键上,会对服务器的响应时间和吞吐量产生影响。

3、定期删除

每隔一段时间执行一次删除过期键操作,并通过限制执行时长和频率来减少对CPU时间的影响。

  • 难点:很难确定执行时长和频率的取值

4、Redis的过期键删除策略

使用惰性删除+定期删除策略,使得CPU时间和内存使用可以取得平衡。

二、内存淘汰策略

1、设置过期键的内存淘汰策略

  • volatile-lru
    使用LRU算法移除key,只对设置了过期时间的键(最近最少使用)。
  • volatile-random
    在过期集合中移除随机的key,只对设置了过期时间的键。
  • volatile-ttl
    移除那些TTL值最小的key,即那些最近要过期的key。

2、全库键的内存淘汰策略

  • allkeys-lru
    在所有集合key中,使用LRU算法移除key
  • allkeys-random
    在所有集合key中,移除随机的key
  • noeviction
    不进行移除,针对写操作,只返回错误信息

相关推荐

  1. Redis: 内存回收

    2024-04-09 16:58:02       16 阅读
  2. redis-内存回收机制

    2024-04-09 16:58:02       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-09 16:58:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-09 16:58:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-09 16:58:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-09 16:58:02       20 阅读

热门阅读

  1. 【C/C++】BST树的后序遍历

    2024-04-09 16:58:02       14 阅读
  2. 设计模式:责任链模式

    2024-04-09 16:58:02       16 阅读
  3. git分支-分支管理

    2024-04-09 16:58:02       15 阅读
  4. Python模拟退火算法

    2024-04-09 16:58:02       13 阅读
  5. Docker 国内镜像

    2024-04-09 16:58:02       12 阅读
  6. Linux_实用技巧

    2024-04-09 16:58:02       13 阅读
  7. 【接口】HTTP(2) |请求方法及状态码

    2024-04-09 16:58:02       15 阅读
  8. 程序员如何搞副业

    2024-04-09 16:58:02       13 阅读