对于最新的稳定版本,请使用 Spring Data Redis 3.3.1! |
对于最新的稳定版本,请使用 Spring Data Redis 3.3.1! |
存储在 Redis 中的对象可能仅在一定时间内有效。
这对于在 Redis 中保留短期对象特别有用,而无需在它们达到生命周期结束时手动删除它们。
过期时间(以秒为单位)既可以使用,也可以使用(请参阅密钥空间)。@RedisHash(timeToLive=…)
KeyspaceSettings
通过使用数值属性或方法的批注,可以设置更灵活的过期时间。
但是,不要同时应用于同一类中的方法和属性。
下面的示例演示对属性和方法的批注:@TimeToLive
@TimeToLive
@TimeToLive
public class TimeToLiveOnProperty {
@Id
private String id;
@TimeToLive
private Long expiration;
}
public class TimeToLiveOnMethod {
@Id
private String id;
@TimeToLive
public long getTimeToLive() {
return new Random().nextLong();
}
}
显式批注属性会从 Redis 中读回实际值或值。-1 表示对象没有关联的过期时间。@TimeToLive TTL PTTL |
显式批注属性会从 Redis 中读回实际值或值。-1 表示对象没有关联的过期时间。@TimeToLive TTL PTTL |
存储库实现可确保通过 订阅 Redis 密钥空间通知。RedisMessageListenerContainer
当过期时间设置为正值时,将运行相应的命令。
除了保留原始副本外,Redis中还会保留一个虚拟副本,并设置为在原始副本后五分钟过期。
这样做是为了使 Repository 支持能够发布 ,每当密钥过期时,即使原始值已被删除,也会在 Spring 中保留过期的值。
在使用 Spring Data Redis 存储库的所有连接的应用程序上都会收到过期事件。EXPIRE
RedisKeyExpiredEvent
ApplicationEventPublisher
默认情况下,初始化应用程序时禁用密钥过期侦听器。
启动模式可以在应用程序中调整,也可以在首次插入具有 TTL 的实体时启动侦听器。
有关可能的值,请参阅 EnableKeyspaceEvents
。@EnableRedisRepositories
RedisKeyValueAdapter
它保存过期域对象的副本以及密钥。RedisKeyExpiredEvent
延迟或禁用过期事件侦听器启动会影响发布。
禁用的事件侦听器不会发布过期事件。
由于侦听器初始化延迟,延迟启动可能会导致事件丢失。RedisKeyExpiredEvent |
延迟或禁用过期事件侦听器启动会影响发布。
禁用的事件侦听器不会发布过期事件。
由于侦听器初始化延迟,延迟启动可能会导致事件丢失。RedisKeyExpiredEvent |
密钥空间通知消息侦听器会更改 Redis 中的设置(如果尚未设置)。
现有设置不会被覆盖,因此您必须正确设置这些设置(或将其留空)。
请注意,在 AWS ElastiCache 上禁用此功能,启用侦听器会导致错误。
若要变通解决此问题,请将参数设置为空字符串。
这样可以防止命令使用。notify-keyspace-events CONFIG keyspaceNotificationsConfigParameter CONFIG |
密钥空间通知消息侦听器会更改 Redis 中的设置(如果尚未设置)。
现有设置不会被覆盖,因此您必须正确设置这些设置(或将其留空)。
请注意,在 AWS ElastiCache 上禁用此功能,启用侦听器会导致错误。
若要变通解决此问题,请将参数设置为空字符串。
这样可以防止命令使用。notify-keyspace-events CONFIG keyspaceNotificationsConfigParameter CONFIG |
Redis 发布/订阅消息不是持久的。 如果密钥在应用程序关闭时过期,则不会处理过期事件,这可能会导致二级索引包含对过期对象的引用。 |
Redis 发布/订阅消息不是持久的。 如果密钥在应用程序关闭时过期,则不会处理过期事件,这可能会导致二级索引包含对过期对象的引用。 |
@EnableKeyspaceEvents(shadowCopy = OFF) 禁用虚拟副本的存储并减小 Redis 中的数据大小。 将仅包含过期的密钥。RedisKeyExpiredEvent id |
@EnableKeyspaceEvents(shadowCopy = OFF) 禁用虚拟副本的存储并减小 Redis 中的数据大小。 将仅包含过期的密钥。RedisKeyExpiredEvent id |