哪些maxmemory策略与redis到期机制兼容?
只有 volatile-ttl 吗? noeviction 会阻止旧记录死亡吗?
答案 0 :(得分:2)
请参阅redis.conf:
MAXMEMORY POLICY:Redis将如何选择maxmemory时要删除的内容 到达了。您可以从以下五种行为中进行选择:
volatile-lru - >使用LRU算法删除带有过期集的密钥 allkeys-lru - >根据LRU算法删除任何密钥 volatile-random - >删除带有过期集的随机密钥 allkeys-random - >删除随机密钥,任何密钥 volatile-ttl - >删除最近到期时间的密钥(次要TTL) noeviction - >根本没有过期,只是在写操作上返回错误
注意:使用上述任何策略时,Redis将在写入时返回错误 操作时,没有合适的驱逐钥匙。
At the date of writing these commands are: set setnx setex append incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby getset mset msetnx exec sort
默认为:
maxmemory-policy noeviction
如果您将该政策保持为默认状态' noeviction'或者如果您选择任何volatile-*
个而没有在数据库中实际存在过期密钥,则数据将无限期地保留在Redis中。但要记住,如果你不从Redis中删除数据并继续添加更多数据,那么你最终会耗尽内存。