Tair默认的数据逐出策略是什么?

更新时间:2025-01-23 08:02:22

云数据库 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。

修改逐出策略

请登录管理控制台,在目标实例的参数设置中修改maxmemory-policy参数的值,具体操作请参见设置参数

常见问题

  • Q:为什么写入带有过期时间(Expire)的Key,会在极短时间内被删除?

    A:您可以检查下实例的内存是否已用完。当实例内存被占满时,确实会触发数据逐出。而由于实例的默认逐出策略是volatile-lru,当写入带有过期时间(Expire)的Key时,这些Key会优先被删除。此时您可以考虑扩容实例的内存规格,具体操作请参见变更实例配置

相关文档

如果Key数量减少,有可能是因为数据过期被清除。云数据库 Tair(兼容 Redis)数据过期清除策略以及手动清除的方法,请参见Tair如何清除过期Key

  • 本页导读 (1)
  • 逐出策略
  • 修改逐出策略
  • 常见问题
  • 相关文档
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等