说说Redis的内存淘汰策略?

大家好,我是锋哥。今天分享关于【说说Redis的内存淘汰策略?】面试题。希望对大家有帮助;

说说Redis的内存淘汰策略?

1000道 互联网大厂Java工程师 精选面试题-Java资源分享网

Redis 提供了几种内存淘汰策略,当 Redis 的内存达到上限时,决定如何处理新增数据。下面是 Redis 支持的内存淘汰策略:

  1. noeviction(不淘汰策略)

    • 这种策略下,Redis 在内存不足时会拒绝写入新数据。也就是说,如果 Redis 已经达到最大内存限制,再写入操作会报错(OOM command not allowed when used memory > 'maxmemory')。
  2. allkeys-lru(LRU 淘汰策略)

    • 当内存满了,Redis 会使用 LRU(Least Recently Used,最近最少使用)算法淘汰最近最少使用的键值对,释放内存。这种策略不管是过期键还是其他键,都会根据使用频率来淘汰。
  3. volatile-lru(LRU 淘汰策略,仅限于设置了过期时间的键)

    • 该策略只会对设置了过期时间的键使用 LRU 算法。当内存达到限制时,Redis 会删除最近最少使用的带过期时间的键。
  4. allkeys-random(随机淘汰策略)

    • Redis 会随机选择键来进行淘汰,释放内存。这个策略适用于不关心具体被淘汰哪个键的场景。
  5. volatile-random(随机淘汰策略,仅限于设置了过期时间的键)

    • 该策略与 allkeys-random 类似,但只会对设置了过期时间的键进行随机淘汰。
  6. volatile-ttl(按过期时间淘汰策略)

    • Redis 会优先淘汰那些即将过期的键。这种策略适合当你希望优先清理掉即将过期的数据时使用。
  7. noeviction + expire

    • 结合 noeviction 和 expire 机制,确保在淘汰数据时以时间为标准的策略处理,帮助 Redis 处理好内存空间。

如何配置?

Redis 中可以通过配置文件 redis.conf 或在运行时通过 CONFIG SET 命令设置 maxmemorymaxmemory-policy 来指定内存限制和淘汰策略。例如:

maxmemory 2gb
maxmemory-policy allkeys-lru

这样设置后,Redis 会在内存达到 2GB 后使用 allkeys-lru 策略进行内存淘汰。

不同的淘汰策略适合不同的使用场景,选择合适的策略可以有效提高 Redis 的性能和资源利用率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值