redis 生存时间 expire ttl

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

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

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


下面是redis3.0.7 运行的

不设置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


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值