redis键过期时间的应用
expire 设置生存时间(单位/秒) pexpire设置生存时间(单位/毫秒) ttl/pttl 查看键的剩余生存时间 persist 取消生存时间 expireat [key] unix时间戳1351858600 pexpireat [key] unix时间戳(毫秒)1351858700000
php中设置某个键的有效时间
#设置某个键的有效时间(单位秒) $redis->expire('key',30); #查看生存时间 echo $redis->ttl('key'); #设置某个键值在当天有效 #如果是hash数据结构的话,针对的是key,而不是hash结构里面的field,如果这样设置,整个hash的key也会失效的 $redis->set($key,$value); $expireTime = mktime(23, 59, 59, date("m"), date("d"), date("Y")); //设置键的过期时间 $redis->expireAt($key, $expireTime);
php单位时间内限制次数
$ip = '8.8.8.8'; //这个key记录三方标识 $key = "request_limit_".$ip; //限制请求时间内 $time = 3; //限制次数为100 $limit = 100; $check = $redis->ttl($key); //-1,未设置过期, -2 不存在 ; >1 超过1秒 if($check > 0){//0.1进来的,进来后过期又重新设置,成永久key,ttl判断为-1 $count = $redis->incr($key); if($count > $limit){ exit('您在{$time}秒内已经请求超过最大次数,请稍后重试'); } }else{ $redis->setex($key,$time,1);//过期重新设置该值 }
在php中key到期后不会自动删除,除非再次查key或系统定期清理( 每次过期key清理的时间不超过CPU时间的25% ,这是一个基于概率的简单算法,基本的假设是抽出的样本能够代表整个key空间,redis持续清理过期的数据直至将要过期的key的百分比降到了25%以下)
基于互联网精神,在注明出处的前提下本站文章可自由转载!
本文链接:https://ranjuan.cn/redis-expire-time/
赞赏
微信赞赏支付宝赞赏
发表评论