Spring Data Redis(Repositories

编程入门 行业动态 更新时间:2024-10-25 04:18:16

Spring <a href=https://www.elefans.com/category/jswz/34/1770381.html style=Data Redis(Repositories"/>

Spring Data Redis(Repositories

Time To Live

存储在Redis 中的Objects 可能只在一定时间能有效。这种机制对那些希望短期存活的Objects 特别有用,当它们的生命周期结束时不用手动移除。过期时间以秒为单位,可以通过@RedisHash(timeToLive=…​) 或KeyspaceSettings (see Keyspaces)来设置。

还有更多灵活的过期时间设置方法,如在使用一个数值属性或方法上添加@TimeToLive 注解。但是在同一个类中不能同时给一个方法和一个属性都设置@TimeToLive 注解。

Example 16. Expirations

public class TimeToLiveOnProperty {@Idprivate String id;@TimeToLiveprivate Long expiration;
}public class TimeToLiveOnMethod {@Idprivate String id;@TimeToLivepublic long getTimeToLive() {return new Random().nextLong();}
}
如果给一个属性明确的添加了@TimeToLive 注解,它将从Redis 读取真实的TTL 或PTTL 值。-1 则表示该object 没有关联过期时间。

仓储的实现确保了对Redis 键空间通知的订阅,使用的是RedisMessageListenerContainer 。

当过期时间设置为一个正数时,相应的EXPIRE 命令会被执行。此外还会持久化一个原始的、有名无实的备份(非原始)在Redis中,并设置5分钟过期时间。这么做是为了使仓储的支持以下功能:当一个key 过期甚至当原始的值已经不存在时,还可以通过Springs ApplicationEventPublisher 来发布拥有过期时间的RedisKeyExpiredEvent 。过期事件将会被接收,被所有使用Spring Data Redis 仓储连接的应用接收。

默认情况下,在初始化应用时key 的过期监听器是不可用的。启动模式可以调整,通过@EnableRedisRepositories 或 RedisKeyValueAdapter 来启动应用的监听器,或者在第一次insert 一个实体时带着TTL。查看EnableKeyspaceEvents 来获取它的有效值。

RedisKeyExpiredEvent 将拥有一个真实过期领域对象的拷贝,key也一样。

过期事件监听器的启动延迟或不可用,将会影响RedisKeyExpiredEvent 的发布。一个不可用的事件监听器不能发布过期事件。由于延迟的监听器初始化,一个延迟的启动会丢失事件。在Redis中,如果没有设置notify-keyspace-events,keyspace 通知消息监听器会更改它。如果已经存在了则不会被覆盖,为了不让它空着,可以让用户来创建。请注意CONFIG在AWS ElastiCache 上有缺陷,使用监听器会导致error。Redis 的Pub/Sub 消息不是持久化的。如果当应用宕掉的时候一个key 过期了,过期事件将不会被处理,这将会导致二级索引中仍然包含着过期对象的引用。

更多推荐

Spring Data Redis(Repositories

本文发布于:2024-02-27 00:04:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1704493.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Data   Spring   Repositories   Redis

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!