哪些 maxmemory 策略允许在 Redis 中过期?
Which maxmemory policies allow expiration in Redis?
哪些 maxmemory 策略与 redis 过期机制兼容?
只有volatile-ttl吗? noeviction 会阻止旧记录死亡吗?
从redis.conf看这里:
MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
is reached. You can select among five behaviors:
volatile-lru -> remove the key with an expire set using an LRU algorithm
allkeys-lru -> remove any key according to the LRU algorithm
volatile-random -> remove a random key with an expire set
allkeys-random -> remove a random key, any key
volatile-ttl -> remove the key with the nearest expire time (minor TTL)
noeviction -> don't expire at all, just return an error on write operations
Note: with any of the above policies, Redis will return an error on write
operations, when there are no suitable keys for eviction.
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
The default is:
maxmemory-policy noeviction
如果您将策略保留为默认值 'noeviction',或者如果您选择任何 volatile-*
策略但实际上数据库中没有过期键,数据将无限期地保留在 Redis 中。但是请记住,如果您不从 Redis 中删除数据并继续添加更多数据,您最终会 运行 内存不足。
哪些 maxmemory 策略与 redis 过期机制兼容?
只有volatile-ttl吗? noeviction 会阻止旧记录死亡吗?
从redis.conf看这里:
MAXMEMORY POLICY: how Redis will select what to remove when maxmemory is reached. You can select among five behaviors:
volatile-lru -> remove the key with an expire set using an LRU algorithm
allkeys-lru -> remove any key according to the LRU algorithm
volatile-random -> remove a random key with an expire set
allkeys-random -> remove a random key, any key
volatile-ttl -> remove the key with the nearest expire time (minor TTL)
noeviction -> don't expire at all, just return an error on write operations
Note: with any of the above policies, Redis will return an error on write operations, when there are no suitable keys for eviction.
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
The default is:
maxmemory-policy noeviction
如果您将策略保留为默认值 'noeviction',或者如果您选择任何 volatile-*
策略但实际上数据库中没有过期键,数据将无限期地保留在 Redis 中。但是请记住,如果您不从 Redis 中删除数据并继续添加更多数据,您最终会 运行 内存不足。