Redis 数据过期及淘汰策略

Redis 数据过期及淘汰策略

过期策略

定时过期

在设置key​的过期时间的同时,为该key​创建一个定时器,让定时器在key​的过期时间来临时,对key进行删除。到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好,但是会占用大量的CPU​资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。

惰性过期

只有当访问一个key​时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU​资源,却对内存非常不友好。极端情况可能出现大量的过期key​没有再次被访问,从而不会被清除,占用大量内存。

定期过期

每隔一定的时间,会扫描一定数量的数据库的expires​字典中一定数量的key​,并清除其中已过期的key​。该策略是前两者的一个折中方案。通过调整定时扫描的时间间隔和每次扫描的限定耗时,可以在不同情况下使得CPU​和内存资源达到最优的平衡效果。

淘汰策略

Redis的内存淘汰策略是指在Redis的用于缓存的内存不足时,如何申请新的内存。

  • noeviction​:当内存不足以容纳新写入数据时,新写入操作会报错。
  • allkeys-lru​:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key
  • allkeys-random​:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key。
  • volatile-lru​:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。
  • volatile-random​:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key。
  • volatile-ttl​:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。

总结

过期策略选择

惰性删除、定期删除组合模式。

淘汰策略选择

allkeys-lru

相关推荐

  1. Redis 数据过期淘汰策略

    2024-07-11 03:16:02       21 阅读
  2. Redis过期淘汰策略

    2024-07-11 03:16:02       42 阅读
  3. Redis--过期删除策略数据淘汰策略

    2024-07-11 03:16:02       25 阅读
  4. 简述Redis过期策略内存淘汰机制

    2024-07-11 03:16:02       31 阅读
  5. Redis——Redis数据库结构、删除策略淘汰策略

    2024-07-11 03:16:02       30 阅读
  6. redis过期淘汰策略数据过期策略与持久化方式

    2024-07-11 03:16:02       51 阅读
  7. Redis过期策略与内存淘汰机制原理实践

    2024-07-11 03:16:02       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 03:16:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 03:16:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 03:16:02       58 阅读
  4. Python语言-面向对象

    2024-07-11 03:16:02       69 阅读

热门阅读

  1. VSCode 推荐插件列表(都安装到Remote SSH上)

    2024-07-11 03:16:02       18 阅读
  2. bug——多重定义

    2024-07-11 03:16:02       23 阅读
  3. Tkinter 部件使用教程

    2024-07-11 03:16:02       20 阅读
  4. ASPICE评估是汽车软件质量的可靠保障

    2024-07-11 03:16:02       21 阅读
  5. AI绘画好学吗?解锁创意无限的艺术新纪元

    2024-07-11 03:16:02       24 阅读
  6. P1255 数楼梯【递推+大数】

    2024-07-11 03:16:02       20 阅读
  7. 中断相关知识

    2024-07-11 03:16:02       21 阅读
  8. 春风得意特斯拉(六)

    2024-07-11 03:16:02       22 阅读
  9. C语言10 函数

    2024-07-11 03:16:02       21 阅读
  10. 在Qt中使用C++编程与传统C++编程的区别

    2024-07-11 03:16:02       17 阅读
  11. 【Android】【多屏】多屏异显异触调试技巧总结

    2024-07-11 03:16:02       23 阅读
  12. pjsip环境搭建、编译源码生成.lib库

    2024-07-11 03:16:02       23 阅读