这篇文章主要介绍“redis过期时间的问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“redis过期时间的问题怎么解决”文章能帮助大家解决问题。对于修改String,redis有:set、setex、append、incr、decr等,其中,使用set、setex来修改原来存在的S免费云主机域名tring,会重置原来设置过的过期时间,严格来说set、setex不是“修改”,而是覆盖,所以原来设置过的key-value,再次set/setex这个key就会覆盖掉原来的。使用try redis测试结果如下:如果使用append、incr、decr等命令来修改,并不会重置原来的过期时间:所以,对于 string 结构,只要进行 set /setex命令,就会重置过期时间,而set命令会直接把过期时间变为永不过期。
比如我在7:00设置了一个 {key1:value} ,过期时间为30分钟,在7:00-7:30期间多次set/setex这个 key 的 value,这个 key1 的过期时间都会重置,最终不会在7:30过期。如何保证每次设置这个过期键后不刷新过期时间,稳定在7:30过期?方法一:使用 定时器,第一次 set 的时候就创建一个定时器,到期就把这个 key 删除。这种方法在数据量大时会比较占用cpu资源,不推荐。方法二:每次setex key的 value 之前,先返回此时key的剩余过期时间,在setex时把这个剩余的过期时间赋给这个 key 作为新的过期时间,就可以解决。以Spring项目为例,利用 redisTemplate.getExpire(String key) 方法返回的剩余过期时间戳(毫秒级别)可以解决,本质上是给 redis 发送 PTTL 命令,以返回毫秒为单位的key的剩余过期时间。代码例子:让 key1 每次修改 都保持第一次设置时的过期时间String类型的K-V 的有效期会随着的 value 值的修改,重新计时:如存在一个 K-V ,过期时间为30秒, 如果把 value 值修改,则过期时间就会重置为30秒,而不是在原来设定的时间减去已经流失的时间。除了string数据结构,对其他数据结构进行修改,不会重置过期时间比如hash、set、Zset、list等:以hash为例子:hash 的有效期不会随着 hash 字段值的修改重新计时。
如果需要重新计时,则需要在修改字段值的时候,重新指定有效期。关于“redis过期时间的问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。
相关推荐: 如何判断元素是否在可视区域中IntersectionObserver
本文小编为大家详细介绍“如何判断元素是否在可视区域中IntersectionObserver”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何判断元素是否在可视区域中IntersectionObserver”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。