暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Redis 中的HZ参数调优

868

Redis是一内存数据库,所有数据均存放在内存中。redis在实际使用中,通常被使用者当作缓存使用,在缓存中,我们的目标是提高缓存的命中率,我们知道内存资源是有限的,这意味着我们希望在内存中保留最有可能被访问的键,为此redis提供了一个TTL的功能来设置key的过期时间。

内存中的数据可以通过TTL指令获取其状态。

TTL命令的返回值:

  • 如果键不存在,TTL命令将返回-2。
  • 如果键存在,但是没有设置过期时间,TTL命令将返回-1。
  • 如果键存在且设有过期时间,TTL命令将返回剩余的生存时间,单位是秒。

与TTL类似,PTTL命令以毫秒为单位返回键的剩余生存时间。

针对已经过期的key,Redis实际是如何释放空间的呢?redis对于过期key,有以下的清除策略:

  • 被动(惰性)删除:当访问一个已经过期的key时,会触发key的惰性删除,直接删除这个key。
  • 主动删除:惰性删除无法保证过期数据被及时删除,这些数据持续累积可能导致内存被占满,索引redis自身也会定期主动删除一些已过期的key。默认情况下,Redis每秒钟抽取20个随机key10次,如果key过期了,就会被删除。

注:这两种方法都不能保证所有的过期key都能被立即被删除。

主动删除过期key的操作,是Redis调用后台方法去执行定期任务(Cron jobs)来实现的,这些定期任务的执行频率由hz参数指定,默认是10,即每秒执行10次。

hz: The range is between 1 and 500, however a value over 100 is usually not a good idea. Most users should use the default of 10 and raise this up to 100 only in environments where very low latency is required. hz 10

hz的取值范围为1~500,增大hz参数的值会提升Redis执行后台定期任务的执行频率,对于删除过期来说,可以更快的释放redis内存空间。但是也会提高Redis服务的CPU使用率。

如果Redis本身CPU使用率不是很高,而内存的使用率较高,系统中又长时间存在大量过期key,可适当考虑增加HZ的值,来加快过期key的删除。


参考: 

https://www.biggeryun.com/help-65-265.html
https://blog.devgenius.io/understanding-lazy-evaluation-and-key-expiration-in-redis-c8e2e36b0fd3



点个“赞 or 在看” 你最好看!

喜欢,就关注我吧!




👇👇👇 谢谢各位老板啦!!!

文章转载自PostgreSQL运维技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论