过期key自动删除(自动清理)的原理
Redis 中的key失效是如何实现的,即失效的key是如何删除的?实际上,Redis 删除失效key的方法主要有两种:
消极方法(passive way)
在key被访问时如果发现它已经失效,那么就删除它;
积极方法(active way)
周期性地从设置了过期时间的key中选择一部分过期的key删除
对于那些从未被查询的key,即便它们已经过期,消极方式也无法清除,因此Redis会周期性地随机测试一些key,已过期的key将会被删掉。
Redis每秒会进行10次操作,具体的流程:
- 随机测试 20 个带有过期信息的key;
- 删除其中已经过期的key;
- 如果超过25%的key被删除,则重复执行步骤1;
这是一个简单的概率算法(trivial probabilistic algorithm),基于假设我们随机抽取的key代表了全部的key空间。