redis 生存时间 expire ttl

为什么redis key需要设置下生存周期

具有时效性的数据,比如限时优惠活动,缓存或验证码等,过了一定的时间就需要删除这些数据。

redis 采用 expire 设置生存时间,到时间自动删除,ttl 查看剩余时间。


下面是redis3.0.7 运行的

redis 生存时间 expire ttl_第1张图片

不设置expire ttl 返回-1, 表示永久存在

设置了expire ttl 会返回剩余时间

如果没有该键(改键从未设定过 ; 到了过期时间,被删除掉了) 直接返回 -2

注意:不同的redis版本可能不一样,还是要实践,看原版api


问题:限制每分钟用户最多只能访问10个页面???


实现 访问频率限制之一(伪代码), 每次判断一分钟

 $isKeyExists = exitsts rate.limiting:$ip  #判断用户key是否存在

 if $isKeyExists is 1 // key存在, 访问次数增加

           $times = incr rate.limingting:$ip

           if $times > 10

                  print 访问频率超过了限制,稍后后再尝试

                  exit

  else

           multi  # 采用事务,使得键 和 键的生存时间 一起设置,初始值设为0

           incr exitsts rate.liming:$ip

           expire $keyName , 60 

           exec



问题:第一个分钟 9 次,第二个分钟 9次,但是中间如 第一个分钟的后半段,第二个分钟的前半段,仍是连续的时间 ,可能超过10次


实现 访问频率限制之二

实现 “A时间内最多访问B次” , 用LIST


你可能感兴趣的:(redis 生存时间 expire ttl)