复述,生存时间应该如何设置

  

复述,生存时间应该如何设置?这篇文章主要为大家详细介绍了复述,生存时间应该如何设置,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

复述,生存时间应该如何设置

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

设置会话:验证码sd2a   会话到期:验证码600

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

保存会话:验证码

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

TTL会话:验证码

在复述的增加,LPUSH, HSET, ZREM等命令时不会改变生存时间的。

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

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

设置会话:验证码sd2a   EXPIREAT会话:验证码1399902009   PEXPIREAT会话:验证码1399902009000

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

$ isExists=存在限制:user1:192.168.1.2   如果(isExists美元){   $ num=增加限制:user1:192.168.1.2   如果(num比美元;10){   打印& # 39;超过限制& # 39;   退出   }   其他}{   多   增加限制:user1:192.168.1.2   限制:到期user1:192.168.1.2 60   执行   }

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

应用场景二:实现缓存。计算一万名用户的排行榜,是很耗费资源的,那么我们把数据在第一次计算后存进一个键,然后对这个关键设置生存时间。在1个小时后生存时间到期,主要被删除,再次进行计算新排名并保存的一个临时关键。我们用伪代码实现:

//战斗排行榜   $排名=得到缓存:等级:战斗   如果不是美元排名   排名=美元计算排名()   多   设置缓存:等级:对抗美元   缓存到期:等级:3600年斗争   EXEC

Redis是内存存储的数据库,假如内存被缓存占满了,Redis会根据配置文件来删除一定的缓存。配置项是Redis的配置文件中的maxmemory参数,单位是字节。超过这个限制之后,会根据配置文件的maxmemory-policy参数来删除不需要的键。maxmemory-policy的可选规则是如下四种:

1、volatile-lru:使用LRU算法删除一个键(设置了生存时间的键)。

2、allkey-lru:使用LRU算法删除一个键。

3、volatile-random:随即删除一个键(设置了生存时间的键)。

4、allkey-random:随即删除一个键。

5、volatile-ttl:删除生存时间即将过期的一个键。是随即取出来N个键,然后删除N个键中即将过期的键,而不是遍历所有的键删除即将过期的。N是几?配置文件配的。

6、nevication:不删除,返回错误。

Redis设置Key的过期时间 – EXPIRE命令

EXPIRE key seconds

为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。

在 Redis 中,带有生存时间的 key 被称为『易失的』(volatile)。

生存时间可以通过使用 DEL 命令来删除整个 key 来移除,或者被 SET 和 GETSET 命令覆写(overwrite),这意味着,如果一个命令只是修改(alter)一个带生存时间的 key 的值而不是用一个新的 key 值来代替(replace)它的话,那么生存时间不会被改变。

比如说,对一个 key 执行 INCR 命令,对一个列表进行 LPUSH 命令,或者对一个哈希表执行 HSET 命令,这类操作都不会修改 key 本身的生存时间。

另一方面,如果使用 RENAME 对一个 key 进行改名,那么改名后的 key 的生存时间和改名前一样。

RENAME 命令的另一种可能是,尝试将一个带生存时间的 key 改名成另一个带生存时间的another_key ,这时旧的 another_key (以及它的生存时间)会被删除,然后旧的 key 会改名为 another_key ,因此,新的 another_key 的生存时间也和原本的 key 一样。

复述,生存时间应该如何设置