Redis 中的数据过期策略是基于惰性删除和定期删除的结合使用。Redis 会在设置 Key 的过期时间时,为 Key 设置一个过期时间戳,然后在每次访问这个 Key 时,Redis 会检查这个 Key 是否已经过期,如果已经过期,则 Redis 会删除这个 Key。这就是惰性删除。但是,如果 Redis 中的某些 Key 很少被访问,那么这些 Key 的过期时间可能会一直存在,造成内存浪费。为了解决这个问题,Redis 引入了定期删除机制,定期删除会定期地检查 Redis 中的 Key 是否过期,如果过期则删除。默认情况下,定期删除是每隔 100ms 进行一次。
需要注意的是,Redis 的数据过期策略并不是精确的,而是近似的。因为 Redis 不会在每个 Key 过期的时候立即删除它,所以有可能存在一些 Key 已经过期了,但是还没有被删除的情况。但是,这种情况并不会对 Redis 的性能和可靠性造成影响,因为 Redis 会在定期删除的时候将过期的 Key 删除掉。