在这里,我尝试使用将返回Publisher的react-redis RedisTemplate
来升级spring-data-redis ReactiveRedisTemplate
。在这种情况下,我想将方法findCache
更改为Mono
。问题是旧的findCache
函数,它使用spring-data-redis接受通用数据,如下所示:
@Autowired
ReactiveRedisTemplate redisTemplate;
public <T> T findCache(String key, Class<T> clazz) {
Object content = this.redisTemplate.opsForValue().get(key);
if (content != null) {
return clazz.cast(content);
}
return null;
}
我当然会出错
Cannot cast reactor.core.publisher.MonoDefer to Person
然后,由于我想让它起反应作用,因此我更新了此代码以返回发布者,如下所示:
if (content != null) {
return ((Mono) content).flatMap(o -> clazz.cast(o));
}
,但是自从我的findCache
接受泛型以来,它也无法正常工作。
我该怎么办,请帮忙。
答案 0 :(得分:0)
最好指定insertTransactionData
参数。但是,如果不能,则应将内容类型更改为insertTransactionData
。像这样:
ReactiveRedisTemplate
如果缓存不包含给定键的值,则它将返回空的Mono,而不是null。