当前位置: 首页 > 后端技术 > Java

Redis过期策略回顾

时间:2023-04-02 01:07:30 Java

之前其实写过一些redis过期的原理。这次主要记录一些使用中的概念,主要是redis使用的过期策略是惰性过期和定时清零。惰性过期其实更简单,就是在访问key的时候,会判断key是否已经过期。如果已过期,则不会返回。但是,这种策略存在漏洞。如果有些key以后不会被访问,就相当于沉到池底,所以需要有一个定时清理机制,从过期的key池(expires)中随机拾取key。具体策略看官网的解释Test20randomkeysfromthesetofkeyswithanassociatedexpire。删除所有发现过期的密钥。如果超过25%的key过期,则从步骤1重新开始,从池中随机获取20个key,删除过期的key。超过25%的key已经过期,所以再做一遍,让过期的key保持在25%以下(大约),这个定时策略可以在redis的配置文件中设置#redis调用一个内部函数来执行很多后台任务,比如#超时关闭客户端连接,清除#从未请求过的过期键,等等。##并非所有任务都以相同的频率执行,但Redis会根据指定的“hz”值检查要执行的#任务.##默认情况下,“hz”设置为10。当Redis空闲时,提高该值将使用更多的CPU,但同时也会使Redis在有空闲时响应更快如果许多键同时过期,超时可能会更精确地处理。##范围在1到500之间,但是超过100的值通常不是##一个好主意。大多数用户应该使用默认值10,仅在需要非常低延迟的环境中将其提高到#100。hz10可以配置此hz的值,这表示每秒执行的次数。默认是10,其实也用hz的一般意思。有兴趣可以看看我之前写的一篇文章。Redis系列之七介绍——过期策略本文使用“Signature4.0International(CCBY4.0)”许可协议。欢迎转载,或重新修改使用,但需注明出处。Signature4.0International(CCBY4.0)本文作者:Nicksxs创建时间:2021-07-25本文链接:redis过期策略回顾