MST

星途 面试题库

面试题:Redis中常用的内存回收策略有哪些及它们的工作原理

请阐述Redis几种常见的内存回收策略,比如volatile - lru、allkeys - lru等,说明每种策略是如何判定哪些数据应该被回收以释放内存空间的。
19.7万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

volatile-lru

从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰。判定规则是通过LRU(最近最少使用)算法,记录每个数据的访问时间,优先淘汰距离当前时间最久未被访问的数据,以释放内存空间。

allkeys-lru

从所有数据集中挑选最近最少使用的数据淘汰。同样基于LRU算法,对所有数据(包括未设置过期时间的数据)记录其访问时间,优先淘汰最久未被访问的数据,从而释放内存。

volatile-ttl

从已设置过期时间的数据集(server.db[i].expires)中挑选即将过期的数据淘汰。判定依据是数据设置的过期时间,优先选择剩余存活时间(TTL)最短的数据进行淘汰,以此来释放内存。

volatile-random

从已设置过期时间的数据集(server.db[i].expires)中随机挑选数据淘汰。不考虑数据的访问时间、过期时间等因素,完全随机地从设置了过期时间的数据集中选择数据进行淘汰,以达到释放内存的目的。

allkeys-random

从所有数据集中随机挑选数据淘汰。对所有数据(无论是否设置过期时间)进行随机选择淘汰,不基于任何特定规则,随机地释放部分数据所占用的内存空间。

noeviction

不进行数据淘汰。当内存使用达到阈值时,任何写入操作都会导致错误,只允许读操作,此策略确保数据不会被意外删除,但可能会因内存不足导致后续写入失败。