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男,至今。欢迎大家收听我的公众账号。
分享到:
相关推荐
2. **下载Redis源码包**:访问Redis官方网站下载最新稳定版源码包。 3. **解压缩并进入目录**:使用`tar`命令解压下载的文件,并进入解压后的目录。 4. **编译安装**: - 执行`make`命令进行编译; - 编译成功后,...
这通常是通过设置数据过期时间、LRU(最近最少使用)策略或者TTL(生存时间)来实现的,确保了缓存数据的新鲜度。 Redis的特点包括但不限于以下几点: 1. **高性能**:Redis是基于内存的,所有操作都在内存中进行...
【Redis教程】全面解析Redis——NoSQL数据库的明星 Redis是一个高效的Key-Value数据库,由Salvatore Sanfilippo在2008年为解决MySQL性能问题而诞生,随后因其出色的表现,迅速成为NoSQL数据库领域的热门选择。Redis...
2. **流(Streams)**:Redis 6 引入了新的数据类型——Stream,用于构建复杂的数据日志和事件处理系统。Stream数据结构支持时间戳索引,可进行多消费者订阅,是发布/订阅模型的增强。 3. **事务改进**:尽管Redis不...
- **流(Streams)**:Redis 4.0 引入了新的数据结构——流,它是一种复杂的数据结构,可以用来实现日志、时间序列数据存储等功能,支持多消费者组和持久化。 - **模块(Module System)**:4.0版本加强了模块系统,...
- **安装Redis**:可以通过官方文档获取安装指南,支持多种操作系统。 - **配置Redis**:主要包括调整服务器监听地址、端口号、密码认证等功能。 - **操作数据库**:学习如何使用Redis客户端工具进行基本的操作,如...
根据给定文件的信息,我们可以提炼出一系列关于Redis的重要知识点,这些知识点主要涵盖了Redis的基本概念、数据类型、优势对比、持久化机制、性能问题及其解决办法、过期键处理策略、淘汰策略、内存管理机制、同步...
4. **性能优化**:合理设置Redis的过期时间、session更新策略(如定时更新或基于活动更新)以及缓存淘汰策略,以保持高效的服务。 5. **扩展性**:Redis天然支持集群模式,当会话数据量增大时,可以通过扩展Redis...
【标题】"传智最新Linux+Redis源码资料"涵盖了两个关键领域——Linux操作系统和Redis内存数据存储系统。Linux是全球最广泛使用的开源操作系统之一,而Redis则是一种高性能的键值数据库,常用于缓存、消息队列等场景...
避免方法:设置合理的过期时间,使用随机或阶梯过期策略,配合哨兵或集群提高高可用性。 7. **Redis 常用命令**: 包括 GET/SET、INCR/DECR、LPOP/RPOP、HGET/HSET、SADD/SREM、ZADD/ZREM 等,以及事务、管道等...
### 架构师系列书籍——Redis实战:知识点详解 #### 一、Key-Value存储系统简介 ##### 1.1.1 Voldemort - **简介**:Voldemort是一款分布式Key-Value存储系统,由LinkedIn开发并开源。 - **特点**: - 支持分区和...
Redis通过`px`参数(以毫秒为单位)可以设置key的过期时间,保证锁在一定时间后自动释放,即使持有锁的客户端在操作完成后没有释放锁。 文中提到了一个非常实用的工具库——jedis,这是Java应用中操作Redis的一个...
- **安装Redis**:下载Redis并按照官方文档进行安装,确保环境中已安装了必要的依赖。 - **配置Redis**:修改`redis.conf`文件中的参数,如绑定地址、端口等,以适应不同环境的需求。 - **操作数据库**:Redis支持多...
Redis作为一款开源的、基于内存的高性能键值对数据库,广泛应用于缓存系统和会话管理等场景。为了监控和诊断Redis运行中可能遇到的问题,...不过,由于参数众多,建议使用时参考官方文档来获取更全面的信息和指导。
由于Redis的锁有超时限制,如果在执行临界区代码时超过了锁的超时时间,锁就会过期,可能会被其他进程再次获取到,导致临界区代码无法得到严格串行执行。因此,建议不要将Redis分布式锁用于较长时间的任务执行。为了...
此示例表示登录成功,并返回了用户令牌(token)及其过期时间。 **密码加密规则**: 1. 首先对密码进行`urlencode(base64_encode())`加密,得到字符串A。 2. 使用MD5算法对`'帐号+密码'`进行加密,生成一个32位的加密...
1. **Redis**:2.0 版本后引入了虚拟内存(VM)特性,允许数据溢出到磁盘,同时支持为键值设置过期时间。 2. **Memcached**:用户可以手动调整最大可用内存。通过 Memcached 代理软件 Magent 可以构建内存集群,如一...
本资源包含两个PDF文档——"apache_shiro开发文档.pdf"和"Shiro教程.pdf",以及一个名为"shiro-example-master.zip"的案例代码包,对于初学者来说是极好的学习材料。 "apache_shiro开发文档.pdf"通常会涵盖Shiro的...
本文将深入探讨四种常见的数据库系统——MySQL、MongoDB、Redis以及Elasticsearch,并结合JavaScript(JS)的应用场景进行讲解。 首先,MySQL是一款关系型数据库管理系统(RDBMS),基于SQL语言,广泛应用于Web应用...