Redis超时回收

Redis超时回收

问题

​ 在Redis中,如果key超时了,Redis会回收key的存储空间吗?

答案

​ 不会。Redis的key超时是不会被其自动回收的,它只会标识哪些键值对超时了。

​ 这样做的一个好处在于,如果一个很大的键值对超时,比如一个列表或者哈希结构,存在数以百万个元素,要对其回收需要很长时间。如果采用超时回收,则可能产生停顿。坏处也很明显,这些超时的键值对会浪费比较多的空间。

Redis提供的回收方式

Redis提供两种回收方式回收这些超时键值对。分别是:定时回收、惰性回收

  • 定时回收:指的是在确定的某个时间触发一段代码,回收超时的键值对。
  • 惰性回收:指的是当一个超时的键,被再次用get命令访问时,将触发Redis将其从内存中清空。

​ 定时回收可以完全回收哪些超时的键值对,但是缺点也很明显,如果这些键值对比较多,则Redis需要运行较长的时间,从而导致卡顿。所以系统设计者一般会选择在没有业务发生的时刻触发Redis的定时回收,以便清理超时的键值对。对于惰性回收而言,它的优势是可以指定回收超时的键值对,它的缺点是要执行一个莫名其妙的get操作,或者在某些时候,我们也难以判断哪些键值对已经超时。

​ 无论是定时回收还是惰性回收,都要依据自身的特点取定制策略,如果一个键值对,存储的是数以万计的数据,使用expire命令使其到达一个时间超时,然后用get命令访问触发其回收,显然会付出停顿代价,这是现实中需要考虑的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值