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%以下)

在php中redis的用途

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/redis-expire-time/

赞赏

微信赞赏支付宝赞赏

发表评论