对于最新的稳定版本,请使用 Spring Data Redis 3.3.1Spring中文文档

对于最新的稳定版本,请使用 Spring Data Redis 3.3.1Spring中文文档

存储在 Redis 中的对象可能仅在一定时间内有效。 这对于在 Redis 中保留短期对象特别有用,而无需在它们达到生命周期结束时手动删除它们。 过期时间(以秒为单位)既可以使用,也可以使用(请参阅密钥空间)。@RedisHash(timeToLive=…​)KeyspaceSettingsSpring中文文档

通过使用数值属性或方法的批注,可以设置更灵活的过期时间。 但是,不要同时应用于同一类中的方法和属性。 下面的示例演示对属性和方法的批注:@TimeToLive@TimeToLive@TimeToLiveSpring中文文档

例 1.到期
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 表示对象没有关联的过期时间。@TimeToLiveTTLPTTL
显式批注属性会从 Redis 中读回实际值或值。-1 表示对象没有关联的过期时间。@TimeToLiveTTLPTTL

存储库实现可确保通过 订阅 Redis 密钥空间通知RedisMessageListenerContainerSpring中文文档

当过期时间设置为正值时,将运行相应的命令。 除了保留原始副本外,Redis中还会保留一个虚拟副本,并设置为在原始副本后五分钟过期。 这样做是为了使 Repository 支持能够发布 ,每当密钥过期时,即使原始值已被删除,也会在 Spring 中保留过期的值。 在使用 Spring Data Redis 存储库的所有连接的应用程序上都会收到过期事件。EXPIRERedisKeyExpiredEventApplicationEventPublisherSpring中文文档

默认情况下,初始化应用程序时禁用密钥过期侦听器。 启动模式可以在应用程序中调整,也可以在首次插入具有 TTL 的实体时启动侦听器。 有关可能的值,请参阅 EnableKeyspaceEvents@EnableRedisRepositoriesRedisKeyValueAdapterSpring中文文档

它保存过期域对象的副本以及密钥。RedisKeyExpiredEventSpring中文文档

延迟或禁用过期事件侦听器启动会影响发布。 禁用的事件侦听器不会发布过期事件。 由于侦听器初始化延迟,延迟启动可能会导致事件丢失。RedisKeyExpiredEvent
延迟或禁用过期事件侦听器启动会影响发布。 禁用的事件侦听器不会发布过期事件。 由于侦听器初始化延迟,延迟启动可能会导致事件丢失。RedisKeyExpiredEvent
密钥空间通知消息侦听器会更改 Redis 中的设置(如果尚未设置)。 现有设置不会被覆盖,因此您必须正确设置这些设置(或将其留空)。 请注意,在 AWS ElastiCache 上禁用此功能,启用侦听器会导致错误。 若要变通解决此问题,请将参数设置为空字符串。 这样可以防止命令使用。notify-keyspace-eventsCONFIGkeyspaceNotificationsConfigParameterCONFIG
密钥空间通知消息侦听器会更改 Redis 中的设置(如果尚未设置)。 现有设置不会被覆盖,因此您必须正确设置这些设置(或将其留空)。 请注意,在 AWS ElastiCache 上禁用此功能,启用侦听器会导致错误。 若要变通解决此问题,请将参数设置为空字符串。 这样可以防止命令使用。notify-keyspace-eventsCONFIGkeyspaceNotificationsConfigParameterCONFIG
Redis 发布/订阅消息不是持久的。 如果密钥在应用程序关闭时过期,则不会处理过期事件,这可能会导致二级索引包含对过期对象的引用。
Redis 发布/订阅消息不是持久的。 如果密钥在应用程序关闭时过期,则不会处理过期事件,这可能会导致二级索引包含对过期对象的引用。
@EnableKeyspaceEvents(shadowCopy = OFF)禁用虚拟副本的存储并减小 Redis 中的数据大小。 将仅包含过期的密钥。RedisKeyExpiredEventid
@EnableKeyspaceEvents(shadowCopy = OFF)禁用虚拟副本的存储并减小 Redis 中的数据大小。 将仅包含过期的密钥。RedisKeyExpiredEventid