php redis任何设置时间
程序员文章站
2022-03-07 13:41:42
...
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培训栏目!
以上就是php redis任何设置时间的详细内容,更多请关注其它相关文章!
推荐阅读
-
php中session过期时间设置及session回收机制介绍_php技巧
-
php set_time_limit(0) 设置程序执行时间的函数
-
php set_time_limit(0) 设置程序执行时间的函数
-
PHP setTime 设置当前时间的代码_php实例
-
webservice - php soapserver可以设置超时时间吗
-
php 如何设置一个严格控制过期时间的session详解
-
一个严格的PHP Session会话超时时间设置方法
-
PHP-Fcgi下PHP的执行时间设置方法
-
一个严格的PHP Session会话超时时间设置方法
-
php-fpm超时时间设置request_terminate_timeout资源问题分析