【发布时间】:2019-03-23 02:38:51
【问题描述】:
我需要缓存来自ReactiveMongoRepository 的数据。数据大约每年更新两次,所以我不关心缓存是否过期。
由于我们can't use @Cacheable 使用通量,我想找到一种直接、简单的方法来将来自 Mongo 的数据存储到 redis,并使用该数据(如果存在),否则存储它并提供原始数据。
有没有比这样做更直接的方法
@GetMapping
public Flux<AvailableInspection> getAvailableInspectionsRedis() {
AtomicInteger ad = new AtomicInteger();
return availableInspectionReactiveRedisOperations.opsForZSet().range("availableInspections", Range.<Long>from(Range.Bound.inclusive(0L)).to(Range.Bound.inclusive(-1L)))
.switchIfEmpty(availableInspectionMongoRepository.findAll().map(e -> {
availableInspectionReactiveRedisOperations.opsForZSet().add("availableInspections", e, ad.getAndIncrement()).block();
return e;
}));
}
我正在寻找的是一个选项,它可以让我缓存数据,就像 @Cacheable 批注一样。我正在寻找一种能够缓存任何类型通量的通用解决方案。
【问题讨论】:
标签: java spring spring-webflux