Redis3官方文档(9)
——Redis过期时间
带过期时间的键(Keys with an expire)
正常情况下Redis键创建时没有关联一个存活时间。键会永远存活,除非被用户显式地删除,例如,使用DEL命令。
EXPIRE命令家族可以关联一个过期时间给指定的键,代价是键需要使用额外的内存。当键设置了过期时间,Redis会确保当指定的时间过去以后会删除这个键。
键的生存时间可以使用EXPIRE和PERSIST命令(或者其他更相关的命令)被更新或者完全删除。
过期时间的精度(Expire accuracy)
在Redis 2.4版本中,过期时间可能并不是很精确,大概有0到1秒的误差。
从Redis 2.6开始,过期时间误差为0到1毫秒。
过期和持久(Expires and persistence)
键的过期时间信息是作为绝对的Unix时间戳存储的(Redis 2.6及以上版本存储的是毫秒)。这意味着,即使Redis实例还没有激活时时间就已经在开始流逝了。
为了让过期时间转转良好,计算机的时间必须稳定。如果你在两台时钟有很大延迟的计算机间移动一个RDB文件,有意思的事情就会发生(像是所有被加载的键在加载时就已经过期了)。
即使运行的实例一直检查计算机的时钟,例如,如果你设置一个键的生存时间为1000秒,然后设置你的计算机时间为未来2000秒,那么键会立即过期而不是持续存在1000秒。
Redis如何使键过期(How Redis expires keys)
Redis的键以两种方式过期:被动方式和主动方式。
一个键在当某个客户端试图访问它并发现其已经超时时就会主动的过期。
当然这还不足够,因为有一些过期的键可能永远不会被访问到。这些键无论如何已经过期,所以Redis周期性地在被设置了过期时间的键中随机的测试其中一些键。所有已经过期的键将从键空间被删除。
特别地,下面是Redis每秒执行10次的动作:
- 测试关联了过期时间的键集合中的20个随机键。
- 删除所有被发现过期的键。
- 如果超过25%的键过期,从步骤1开始。
这是一个简单的概率性算法,基本上我们的假定是,我们的采样代表了整个键空间,我们不断的过期直到那些可能过期的键的百分比低于25%。
这意味着,在任何给定时刻,已经过期的键的最大数量占用的内存等于每秒写操作的最大数量除以4。
复制和AOF文件如何处理过期时间(How expires are handled in the replication link and AOF file)
为了不牺牲一致性并获取正确的行为,当一个键过期了,一个DEL操作将会同步到AOF文件和所有关联的从服务器。这种方式过期的处理集中的主服务器实例,没有发生一致性错误的机会。
但是,虽然连接到主服务器的从服务器不会独立地使键过期(但是会等待从主服务器来的DEL操作),但是它们会保持数据库中的完整的过期状态,所以当一台从服务器被选举为主服务器时,它可以独立的使这些键过期,完全充当一台主服务器。
===============================================================================
大家好,我是阮威。华中科技大学,计算机软件专业硕士。毕业后加入腾讯,先后在腾讯电子商务部和无线游戏产品部工作,现供职于欢聚时代基础产品部。IT男,至今。欢迎大家收听我的公众账号。
分享到:
相关推荐
redis的官方文档,谁要谁下载好吧,滴滴
php-redis 中文文档
promethues(普罗米修斯)监控redis——详细文档,超详细文档总结
Redis 中文文档
虽然是英文文档,但是对高级程序员应该不难看懂。
从网上抓取的redis文档,中文版本!!提供给在没有网络下的朋友查询参考使用!!
redis官方文档中文版
最新版redis官方中文说明文档(2016).HTML版本,全中文。 很好的redis学习资料。
scala连接redis哨兵模式 demo 使用scala的redis库(csdn)————程序
redis命令参考官方文档中文版
redis说明文档使用说明redis说明文档使用说明redis说明文档使用说明redis说明文档使用说明redis说明文档使用说明redis说明文档使用说明
redis介绍文档学习,适合初学者学习,欢迎大家共享资源
包含翻译后的API文档:flink-connector-redis_2.10-1.1.5-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.flink:flink-connector-redis_2.10:1.1.5; 标签:apache、flink、connector、redis、中文文档...
redis使用文档手册,redis的各种方法详解,各种数据类型详解,php使用redis缓存,可以多数据类型存储,相对memcache来说,使用更方便,而且redis可以永久化存储
Redis 中文文档.pdf
Redis Stream是一个作者已经谋划多年的feature,本质是一个消息队列,但是和kafka、RocketMq等消息中间件...本文就根据作者发布的设计文档、博客及相关资料,对Redis Stream做一个简单的介绍,目前代码在unstable分支。
php redis 中文API和redis chm文档,本人在开发的过程中经常使用,希望可以帮到各位,谢谢
Redis 中文文档 最新redis的命令的帮助文档
redis官方中文说明文档(HTML版本)。 很实用的手册。
Redis技术文档,没有多少Redis内容,因为Redis开发都有jedis开发包,包含Redis基本操作,读写分离(收集的),Redis集群包含,