面试题答案
一键面试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
不进行数据淘汰。当内存使用达到阈值时,任何写入操作都会导致错误,只允许读操作,此策略确保数据不会被意外删除,但可能会因内存不足导致后续写入失败。