云数据库 Tair(兼容 Redis)实例的内存占满时,会触发数据逐出策略(又称为淘汰策略),以确保内存不会超出限制。默认的策略为volatile-lru,即从已设置过期时间的Key中,清除最少使用的Key。本文介绍云数据库 Tair(兼容 Redis)的逐出策略。
逐出策略
volatile-lru(内存型及Redis开源版默认):从已设置过期时间(Expire)的Key中,删除最近最少使用的Key(LRU算法),且不会考虑Key是否已经过期。
noeviction(持久内存型默认):不删除任何Key,当内存达到上限时,将无法写入新数据,数据库会返回错误信息。
volatile-lfu:从已设置过期时间(Expire)的Key中,删除最不常用的Key(LFU算法)。
volatile-random:从已设置过期时间(Expire)的Key中,随机删除一些Key。
volatile-ttl:从已设置过期时间(Expire)的Key中,根据存活时间(TTL)从小到大排序进行删除。
allkeys-lru:从所有Key中,删除最近最少使用的Key(LRU算法)。
allkeys-lfu:从所有Key中,删除最不常用的Key(LFU算法)。
allkeys-random:从所有Key中,随机删除一些Key。
修改逐出策略
常见问题
Q:为什么写入带有过期时间(Expire)的Key,会在极短时间内被删除?
A:您可以检查下实例的内存是否已用完。当实例内存被占满时,确实会触发数据逐出。而由于实例的默认逐出策略是volatile-lru,当写入带有过期时间(Expire)的Key时,这些Key会优先被删除。此时您可以考虑扩容实例的内存规格,具体操作请参见变更实例配置。
相关文档
如果Key数量减少,有可能是因为数据过期被清除。云数据库 Tair(兼容 Redis)数据过期清除策略以及手动清除的方法,请参见Tair如何清除过期Key。
- 本页导读 (1)
- 逐出策略
- 修改逐出策略
- 常见问题
- 相关文档