当redis使用的内存数大于可使用的内存数时,进行内存淘汰。
相对于Memcached来说(只有LRU淘汰算法),redis的淘汰算法比较丰富,主要有3种:
1.随机淘汰算法:从数据库中随机删除一个key
2.LRU淘汰算法:从数据库中删除一个最近最少访问的key
3.TTL淘汰算法:从数据库中删除一个最快过期的key
通过maxmemory-policy配置项指定使用的淘汰算法,至于使用哪种淘汰算法,应根据自己的需求设定。
redis 确定驱逐某个键值对后,会删除这个数据并,并将这个数据变更消息发布到本地(AOF 持久化)和从机(主从连接)。
具体到实践:
volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
no-enviction(驱逐):禁止驱逐数据
已有 0 条评论