Redis中的过期策略是什么
Redis的过期策略
redis主要有2种过期删除策略
惰性删除惰性删除指的是当我们查询key的时候才对key进行检测,如果已经达到过期时间,则删除。显然,他有一个缺点就是如果这些过期的key没有被访问,那么他就一直无法被删除,而且一直占用内存。
定期删除定期删除指的是redis每隔一段时间对数据库做一次检查,删除里面的过期key。由于不可能对所有key去做轮询来删除,所以redis会每次随机取一些key去做检查和删除。
【背景】Redis是一款非常流行的高性能Key-Value数据库,其过期策略却受到不少关注和疑惑。在这篇文章中,我们将深入探究Redis中的过期策略是什么。
【过期策略简介】Redis过期策略有两种:被动过期和主动过期。被动过期指的是在Redis中,当一个key过期时,它会和一个被动的事件进行关联,比如客户端请求这个key时,Redis会检测到key已经过期并删除它。而主动过期则是通过定时任务来检测并删除已过期的key。
【被动过期的实现】Redis通过访问key时的检测和定期扫描两种方式来实现被动过期。访问key时的检测需要付出额外的性能代价,因此Redis一般采用定期扫描的方式来清理已过期的key。定期扫描的频率由config设置的参数决定。
【主动过期的实现】Redis将所有key的过期时间保存在一个单独的字典中,定期清理已过期的key。如果一个key没有过期时间,则不会被加入到这个字典中。在Redis中,主动过期实现的开销比较小。
通过本文的探究,我们学习到了Redis中的两种过期策略:被动过期和主动过期,并了解了它们各自的实现方式和优缺点。有了这些知识,我们就能更加深入地理解Redis并应用它的过期特性。