我使用的是spring缓存默认实现(concurrenthashmap):
@Bean
CacheManager cacheManager() {
ConcurrentMapCacheManager cacheManager = new ConcurrentMapCacheManager("mycache");
cacheManager.setAllowNullValues(false);
return cacheManager;
}
reactor插件用于获取项目。缓存未命中项写入缓存:
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);
被认为是阻拦电话?是否应在其他计划程序上发布?
1条答案
按热度按时间4uqofj5v1#
对。
如果你有机会,我建议你用reactiveredisconnection代替莴苣。
例如,您可以按如下方式设置bean:
那你可以用
ReactiveRedisOperations
以非阻塞方式从缓存中存储/检索数据。你可以这样做: