两种方式
- 被动:惰性删除
- 主动:随机删除
当客户端请求一个key时,redis发现该key已过期,则会触发删除操作(惰性删除)。
仅仅通过这种被动的方式处理是不够的,毕竟也可能存在大量过期的key永远不会被客户端访问,所以Redis会定期的测试一些随机的存在过期的key,如果过期则会删除(随机删除)。
- 随机测试20个存在过期时间的key
- 删除所有已过期的key
- 如果超过25%的key过期了,则从步骤1开始再来一遍
关于数据一致性,当一个key过期了,DEL操作会合到AOF文件中,并获得所有连接的从节点。这种方式使过期操作集中到主节点,避免数据一致性的错误。
从节点不会独立的进行删除过期key的操作,只能等待主节点的删除操作。