1. 程式人生 > >[線上問題]redisTemplate.setValueSerializer 對redis值的全局設置影響

[線上問題]redisTemplate.setValueSerializer 對redis值的全局設置影響

字符串 rabl 方法 conf ict ring 字符 解決 去掉

1.redis建議都采用json字符串來設值和取值,通過json再轉換為list對象

redisTemplate.setValueSerializer(new GenericToStringSerializer<String>(String.class, Charset.forName("UTF-8"))); //影響全局的設置

2.或者直接設值list或取list值。

但是如果以上1,2串行來使用,就會報錯:

Caused by: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type java.util.ArrayList<?> to type java.lang.String

對報錯源代碼的分析:

GenericToStringSerializer
private Converter converter = new Converter(new DefaultConversionService());
ConversionService

GenericConversionService implements ConfigurableConversionService

解決方法:要麽全部使用字符串,要麽全部去掉redisTemplate.setValueSerializer 全局設值。

問題出在另外一個點設置了redisTemplate.setValueSerializer,且設值成功,其他的點取list(setList(),getList()方法)的時候就報ConverterNotFoundException異常了。

[線上問題]redisTemplate.setValueSerializer 對redis值的全局設置影響