redis内存上限的处理策略

 一、前言

      在 Redis 中,maxmemory 是一个用于设置 Redis 内存使用的上限的配置项。当 Redis 的内存占用达到 maxmemory 时,需要采取一些策略来处理新写入的数据以及对现有数据的读取和删除。这些策略可以通过配置 maxmemory-policy 来指定

二、策略

 volatile-lru: 从已设置过期时间的键中挑选最近最少使用的键进行删除。这个策略主要用于删除具有过期时间的键,以腾出空间

allkeys-lru: 从所有键中挑选最近最少使用的键进行删除。不考虑键是否设置了过期时间,对所有键都适用

volatile-random: 从已设置过期时间的键中随机选择一个进行删除。同样,这个策略也主要用于处理带有过期时间的键

allkeys-random: 从所有键中随机选择一个进行删除。与 volatile-random 类似,不考虑键是否设置了过期时间

volatile-ttl: 从已设置过期时间的键中挑选将要过期的键进行删除。删除的是即将到期的键,以腾出空间

noeviction: 不删除任何键,当达到 maxmemory 时,新写入的操作会得到错误响应。这种策略适用于确保 Redis 不会删除任何数据,而是拒绝写入以确保数据完整性的场景

volatile-lfu: 从已设置过期时间的键中挑选最少使用的键进行删除。与 LRU 类似,但基于键的访问频率(LFU 算法)

allkeys-lfu: 从所有键中挑选最少使用的键进行删除。考虑所有键的访问频率,不考虑是否设置了过期时间

可以根据开发人员的要求选择适合的策略,以下是在redis配置文件夹中的使用示例

maxmemory 3G                #建议设置为最大内存的四分之三
maxmemory-policy volatile-lru      #配置清理策略

如果在 Redis 中达到 maxmemory 而没有配置任何删除策略 (maxmemory-policy 未配置或配置为 noeviction),所有新的写入操作(SET、INCR、LPUSH等)将会失败,返回错误信息,指示 Redis 已经达到内存限制。读取操作(GET、LRANGE等)仍然是可以执行的,因为这些操作不会导致额外的内存占用

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值