过期redis key有两种方式:被动和主动方式。
被动过期:当一些客户端要访问这个key时,发现它已经过期,则删除。
显然这样做是不够的,因为可能有些key不会被再次访问。这种情况下也同样要删除这些过期的key。因此就有了主动过期的方式。
主动过期:redis会定期,通过随机的方式在设置了过期时间的key中选择一些key,如果这些key已经超过过期时间则把他们从keyspace中删除。
Redis每秒钟会做10次这样的事情:
- 从设置了过期时间的key集合中测试20个随机的key。
- 删除所有过期的key。
- 如果超过25%的key过期,则从第1步开始。
这是一个简单的概率算法,基于我们的抽样对于整个key空间具有代表性。直到过期率低于25%。