我需要缓存来自ReactiveMongoRepository. 数据大约每年更新两次,所以我不关心缓存是否过期。
由于我们不能将 @Cacheable与Flux一起使用,我想找到一种直接、简单的方法来将来自 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 注释那样缓存数据。我正在寻找能够缓存任何类型的通量的通用解决方案。
四季花海
相关分类