Phantom Key-Spring Data Redis-目标/最佳做法

问题描述

我正在使用Spring Data Redis,我对幻像密钥的实用性有些困惑。下面是关于这个的一些问题:

  • Spring Data Redis的Phantom Key的目标是什么?

  • 我什么时候应该保存?有什么影响?

  • 在此主题上是否有最佳实践?

感谢您的反馈。

解决方法

当过期时间设置为正值时,对应的 运行 EXPIRE 命令。除了坚持原来的, 幻像副本保留在 Redis 中并设置为五分钟过期 在原来的之后。这样做是为了启用存储库支持 发布RedisKeyExpiredEvent,保存Spring的过期值 ApplicationEventPublisher 每当密钥过期时,即使 原始值已被删除。收到到期事件 在所有使用 Spring Data Redis 存储库的连接应用程序上。

默认情况下,在初始化时禁用密钥过期监听器 应用。启动模式可以在 @EnableRedisRepositories 或 RedisKeyValueAdapter 启动监听器 与应用程序一起或在第一次插入具有 TTL 的实体时。 有关可能的值,请参阅 EnableKeyspaceEvents。

RedisKeyExpiredEvent 持有过期域对象的副本作为 以及钥匙。

有关详细信息,请参阅 https://docs.spring.io/spring-data/data-redis/docs/current/reference/html/#redis.repositories.expirations