Redis 是如何做内存回收的
Redis 使用了多种策略来进行内存回收,以保证在物理内存占用和性能之间取得平衡。
- 空转数据淘汰:Redis 会监控所有的键,并且通过一个时间戳记录下最后一次被访问的时间,当某个键超过一定时间没有被访问,Redis 会认为它是空转的,可以被淘汰。
内存淘汰策略:通过配置文件中的
maxmemory-policy
选项来设定,常见的策略包括:volatile-lru
:从设置了过期时间的键中选择最近最少使用的键进行淘汰。allkeys-lru
:从所有键中选择最近最少使用的键进行淘汰。volatile-random
:从设置了过期时间的键中随机选择一个进行淘汰。allkeys-random
:从所有键中随机选择一个进行淘汰。volatile-ttl
:从设置了过期时间的键中选择剩余时间(TTL)最短的进行淘汰。noeviction
:不进行任何淘汰,当内存不足时添加数据会报错。
示例配置:
# 设置内存淘汰策略为 allkeys-lru
maxmemory-policy allkeys-lru
- 内存淘汰的触发:当新写入的数据大小超过了配置的
maxmemory
限制时,Redis 会根据maxmemory-policy
指定的策略进行数据淘汰。
请注意,根据实际情况和数据特点,选择合适的淘汰策略以确保应用程序的性能和数据的完整性。
评论已关闭