前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 的回收策略(淘汰策略)是什么?

Redis 的回收策略(淘汰策略)是什么?

作者头像
用户1289394
发布2023-08-22 16:57:37
2930
发布2023-08-22 16:57:37
举报
文章被收录于专栏:Java学习网Java学习网

Redis 作为内存数据库,面临着随时可能对内存进行碎片堆积、内存满载的情况。因此,为了解决这种问题,Redis引入了回收策略(淘汰策略)。下面将重点介绍 Redis 回收策略。

Redis 支持几种回收策略,每种回收策略都有各自适用的场景和使用限制。下面分别介绍一下这些回收策略:

1、LRU(Least Recently Used)

LRU 策略根据数据最近被访问的时间来判断数据是否被使用。当空间满时,会优先淘汰那些最长时间没被访问的数据。该策略比较简单有效,并且与实际应用场景相符合。例如缓存数据库通常采用 LRU 策略,因为缓存中经常访问的数据不会被淘汰掉。

2、LFU(Least Frequently Used)

LFU 策略在回收处理时考虑数据的热度,根据多个周期内被访问的次数来淘汰数据。每个键有一个计数的值,表示它在最近一段时间内被访问的次数,周期长度可由用户指定。LFU 的缺点是需要追踪并更新每个键的访问次数,这会增加计算开销。另外,对于暂时访问较少但在将来可能会被使用的数据,LFU 没有 LRU 的容错性那么高。

3、Random(随机策略)

随机策略是一种非常基础的回收策略,它根据一个随机数值来淘汰内存中的 key。由于该策略没有考虑数据的使用频率和时间,因此通常用作后备策略,仅在面临极端情况下才会启用。

在 Redis 默认设置下,在服务器的结构体中包含了 maxmemory 和 maxmemory-policy 两个选项。请注意,maxmemory 选项规定 Redis 的最大内存,而 maxmemory-policy 选项则指定满足 maxmemory 时应采取的策略:

  • volatile-lru —删除最近最少使用(lru)的key,限制为过期的数据(设置expire)
  • volatile-ttl —删除即将过期(ttl)的key,限制为过期的数据(设置expire)
  • volatile-random — 删除任意的key,限制为过期的数据(设置expire)
  • allkeys-lru —删除最近最少使用的key,不考虑是否过期
  • allkeys-random — 删除任意的key,不考虑是否过期
  • no-enviction — 不删除任何value,只新增当内存已经满载了.

在配置策略时,需要结合实际业务场景来进行调整。maxmemory-policy对于redis实例的经营十分重要,应该根据不同的存储特性和数据对象进行选择,这可以有效提高 Redis 数据库的运行效率。

总结,Redis 回收(淘汰策略)的具体方案根据实际的需求以及使用情况来设定,不同的方案具有不同的优缺点。需要针对实际需求,在平衡内存与性能的前提下,使用最适宜的一种回收策略。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档