我將 Spring Repositories 與 Redis 一起使用,并希望將有關(guān)用戶的數(shù)據(jù)存儲 10 秒,然后從 Redis 中使它們過期(并刪除)。我知道過期和刪除是不同的,但是有沒有一種簡單的方法可以像我自動使它們過期一樣刪除它們。我有以下實體@RedisHash(value = "User", timeToLive = 10)public class User { @Id private String id; @Indexed @ApiModelProperty(notes = "First name of the user") private String firstName; @ApiModelProperty(notes = "Last name of the user") private String lastName; ... ...}資料庫@Repositorypublic interface UserRepository extends CrudRepository<User, String> {}Redis 的配置@Configurationpublic class RedisConfig { @Value("${redis.hostname}") private String redisHostname; @Value("${redis.port}") private int redisPort; @Bean public JedisConnectionFactory jedisConnectionFactory() { RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(redisHostname, redisPort); return new JedisConnectionFactory(redisStandaloneConfiguration); } @Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(jedisConnectionFactory()); return template; }}當我從存儲庫中使用 findAll 方法獲取所有實體(如果它們已過期)時,我會得到一堆空值,并且我可以看到它們在帶有 redis 客戶端的 redis 中。我擔心這會用大量過期數(shù)據(jù)填充數(shù)據(jù)庫。有沒有辦法刪除過期的實體。
2 回答

牧羊人nacy
TA貢獻1862條經(jīng)驗 獲得超7個贊
簡短的回答是:
放置以下注釋:
@EnableRedisRepositories(enableKeyspaceEvents = EnableKeyspaceEvents.ON_STARTUP)
在你的主類(SpringBootApplication)之上
對象現(xiàn)在將從 redis 存儲中刪除:)
添加回答
舉報
0/150
提交
取消