phpredis设置时间的方法

这篇文章将为大家详细讲解有关php redis设置时间的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

成都创新互联欢迎咨询:18980820575,为您提供成都网站建设网页设计及定制高端网站建设服务,成都创新互联网页制作领域十载,包括阳光房等多个方面拥有多年的网站制作经验,选择成都创新互联,为企业保驾护航。

php redis设置时间的方法:1、取消生存时间,将键的生存时间设为永久,是PERSIST,代码为【PERSIST session:captcha】;2、看一个键的生存时间用TTL命令,代码为【TTL session:captcha】。

php redis设置时间的方法:

Redis对键提供生存时间,在不指定生存时间时,生存时间是永久。时间到期后Redis会自动删除这个键。可以用EXPIRE命令,时间单位时秒,如果一个键是被设为有限的生存时间,那么在SET key进行重新赋值的时候会被再次设为永久:

SET session:captcha sd2a
EXPIRE session:captcha 600

取消生存时间,将键的生存时间设为永久,是PERSIST:

PERSIST session:captcha

查看一个键的生存时间用TTL命令,-1表示永久或者以及到期被删除。

TTL session:captcha

在Redis的INCR,LPUSH,HSET,ZREM等命令时不会改变生存时间的。

想要精确到毫米来控制时间,就需要PEXPIRE即可,使用PTTL查看剩余时间。

如果想要给定一个到期的时间而不是多少秒后到期呢?就需要EXPIREAT和PEXPIREAT。EXPIREAT的参数是到期时的时间戳(秒),PEXPIREAT的参数是到期时间是时间戳(毫秒)

SET session:captcha sd2a
EXPIREAT session:captcha 1399902009
PEXPIREAT session:captcha 1399902009000

应用场景一:访问频率限制:我们限定每个用户1分钟只能浏览10个页面。伪代码如下:

$isExists = EXISTS limit:user1:192.168.1.2
if($isExists){
    $num = INCR limit:user1:192.168.1.2
    if($num > 10){
        print '超过限制'
        exit
    }
}else{
    MULTI
    INCR limit:user1:192.168.1.2
    EXPIRE limit:user1:192.168.1.2 60
    EXEC
}

我们用了事务的原因是因为,加入在执行了INCR limit:user1:192.168.1.2之后,在执行EXPIRE limit:user1:192.168.1.2 60之前,客户端被关闭了。那么这个键和值就会被持久化保存。且该ID终身只能访问10次了。这就太糟糕了。

关于php redis设置时间的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


文章名称:phpredis设置时间的方法
文章位置:http://scyanting.com/article/ihgpeh.html