expire 设置生存时间(单位/秒)pexpire设置生存时间(单位/毫秒)ttl/pttl 查看键的剩余生存时间persist 取消生存时间expireat [key] unix时间戳1351858600pexpireat [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%以下)
发表评论