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/
赞赏
微信赞赏
支付宝赞赏
发表评论