Redis 面试题, redis 的内存淘汰策略有哪些?
Redis 面试题, redis 的内存淘汰策略有哪些?
QA
Step 1
Q:: Redis的内存淘汰策略有哪些?
A:: Redis提供了多种内存淘汰策略,主要包括以下几种:
1. noeviction:
不驱逐,写操作会报错。
2. allkeys-lru:
在所有key中使用LRU(最近最少使用)算法进行淘汰。
3. volatile-lru:
在设置了过期时间的key中使用LRU算法进行淘汰。
4. allkeys-random:
在所有key中随机选择进行淘汰。
5. volatile-random:
在设置了过期时间的key中随机选择进行淘汰。
6. volatile-ttl:
在设置了过期时间的key中,根据剩余生存时间(TTL)进行淘汰,优先淘汰即将过期的key。
Step 2
Q:: Redis中LRU算法是如何实现的?
A:: Redis中的LRU算法使用了一种近似LRU的算法,通过维护一个全局的时钟来记录key的访问时间。每次访问一个key时,都会更新该key的访问时间。Redis会定期采样部分key,根据访问时间进行淘汰,以达到近似LRU的效果。
Step 3
Q:: 如何配置Redis的内存淘汰策略?
A:: 可以通过修改Redis配置文件中的maxmemory-policy
参数来设置内存淘汰策略,例如:maxmemory-policy allkeys-lru
。此外,还可以使用CONFIG SET maxmemory-policy <policy>
命令在运行时动态修改淘汰策略。
Step 4
Q:: Redis如何监控和管理内存使用?
A:: Redis提供了多种内存管理和监控工具:
1.
INFO memory
命令可以查看当前的内存使用情况。
2.
MEMORY STATS
命令可以查看更详细的内存统计信息。
3.
MEMORY PURGE
命令可以释放一部分内存。
4.
可以通过设置maxmemory
参数来限制Redis实例使用的最大内存。