这里我尝试使用reactive-redis ReactiveRedisTemplate
来升级我的spring-data-redis RedisTemplate
,它返回Publisher。在这种情况下,我想将方法findCache
更改为Mono
。问题是使用spring-data-redis的旧findCache
函数接受泛型数据,如下所示:
@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
然后,因为我想让它React性地工作,我更新了这段代码以返回publisher,像这样:
if (content != null) {
return ((Mono) content).flatMap(o -> clazz.cast(o));
}
但它也不会工作,因为我的findCache
接受通用.我需要做什么,请帮助.
1条答案
按热度按时间wqnecbli1#
最好指定
ReactiveRedisTemplate
参数。但如果不能指定,则应将内容类型更改为Mono<Object>
。类似于以下内容:如果cache不包含给定key的值,它将返回空的Mono,而不是null。