javascript
Spring Boot整合Redis——自定义RedisSerializer
引言
spring boot簡(jiǎn)單引入redis依賴,并使用RedisTemplate進(jìn)行對(duì)象存儲(chǔ)時(shí),需要使存儲(chǔ)對(duì)象實(shí)現(xiàn)Serializable接口,這樣才能夠成功將對(duì)象進(jìn)行序列化。
RedisTemplate默認(rèn)使用的序列化機(jī)制是JdkSerializationRedisSerializer,但實(shí)際開(kāi)發(fā)中,往往會(huì)以json的形式來(lái)保存數(shù)據(jù)。那么可以通過(guò)兩種方式來(lái)實(shí)現(xiàn)這種要求,第一就是將保存的對(duì)象通過(guò)一些方法先轉(zhuǎn)換成JsonString的形式,然后再通過(guò)redis保存;第二種方式,就是今天將要總結(jié)的自定義RedisSerializer的方式。
Jackson2JsonRedisSerializer
如果你使用IDE如Eclipse使用Ctrl + T 查看RedisSerializer的實(shí)現(xiàn)類,就可以看到很多可供選擇的序列化器:
因此,根據(jù)項(xiàng)目實(shí)際使用場(chǎng)景,可以嘗試選擇不同的序列化器,這里也可以看到,StringRedisSerializer是專門(mén)用于序列化字符串的,以及剛才提到的jdk序列化器,還有阿里的FastJsonRedisSerializer等等。
這里我選擇Jackson2JsonRedisSerializer舉例演示。
@Configuration public class RedisConfig {@Beanpublic RedisCacheManager cacheManager(RedisTemplate<String, Object> redisTemplate) {RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);cacheManager.setUsePrefix(true);return cacheManager;}@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory)throws UnknownHostException {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setKeySerializer(new StringRedisSerializer());template.setConnectionFactory(factory);// 自定義Jackson2JsonRedisSerializerJackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);// ObjectMapper om = new ObjectMapper(); // om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); // om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); // serializer.setObjectMapper(om);template.setValueSerializer(serializer);template.afterPropertiesSet();return template;}}測(cè)試自定義序列化
注入redisTemplate:
@Autowired private RedisTemplate<String, Object> redisTemplate;存儲(chǔ)對(duì)象關(guān)鍵代碼:
ValueOperations<String, Object> opsForValue = redisTemplate.opsForValue(); String key = "emp-01"; opsForValue.set("emp-01", new Emp("張紅玉", 23));觀察redis中的數(shù)據(jù):
其中Object是一個(gè)沒(méi)有實(shí)現(xiàn)Serializer接口的員工類,可以看到redis中依然成功保存了這個(gè)json對(duì)象。?
?綜上,就是關(guān)于自定義序列化器的簡(jiǎn)單配置,歡迎文末留言。
總結(jié)
以上是生活随笔為你收集整理的Spring Boot整合Redis——自定义RedisSerializer的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一篇搞懂HTTP协议
- 下一篇: Java 注解知识总结