【发布时间】:2021-06-12 03:32:13
【问题描述】:
我使用的是 Spring Cache 默认实现(ConcurrentHashMap):
@Bean
CacheManager cacheManager() {
ConcurrentMapCacheManager cacheManager = new ConcurrentMapCacheManager("mycache");
cacheManager.setAllowNullValues(false);
return cacheManager;
}
Reactor addons 用于获取物品。缓存未命中项写入缓存:
public Mono<T> get(ID key) {
return CacheMono.lookup(k -> findValue(k).map(Signal::next), key)
.onCacheMissResume(Mono.defer(valueRetriever(key)))
.andWriteWith((k, signal) -> Mono.fromRunnable(() -> {
if (!signal.isOnError()) {
writeValue(k, signal.get());
}
}));
}
private void writeValue(ID key, T value) {
if (value != null) {
cache.put(key, value);
}
}
cache.put(key, value); 是否认为是阻塞调用?应该在不同的调度器上发布吗?
【问题讨论】:
标签: java spring spring-webflux reactive spring-cache