最專業(yè)的外貿(mào)網(wǎng)站建設(shè)廣州關(guān)鍵詞seo
前提紀(jì)要:因為業(yè)務(wù)變動,需要在原先只支持protobuf的前提序列化的前提下,新增正常的序列化讀取數(shù)據(jù)所以在原先的基礎(chǔ)上進行優(yōu)化。文章用于記憶。
話不多說直接上代碼
@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
@Import({RedisAutoConfiguration.class})
@Slf4j
public class ProtobufRedisTemplateConfig {private final LettuceConnectionFactory lettuceConnectionFactory;public ProtobufRedisTemplateConfig (LettuceConnectionFactory lettuceConnectionFactory) {this.lettuceConnectionFactory = lettuceConnectionFactory;}@Beanpublic RedisTemplate<Object, Object> protobufRedisTemplate() {RedisTemplate<Object, Object> template = new RedisTemplate<>();template.setConnectionFactory(lettuceConnectionFactory);RedisSerializer<byte[]> byteRedisSerializer = new RedisSerializer<byte[]>() {@Overridepublic byte[] serialize(byte[] bytes) throws SerializationException {return new byte[0];}@Overridepublic byte[] deserialize(byte[] bytes) {return bytes;}};template.setKeySerializer(byteRedisSerializer);template.setValueSerializer(byteRedisSerializer);template.setHashKeySerializer(byteRedisSerializer);template.setHashValueSerializer(byteRedisSerializer);template.afterPropertiesSet();log.warn("the Lettuce-protobuf starting success, date is -->" + new Date());return template;}@Beanpublic RedisTemplate<String, Object> jsonRedisTemplate() {RedisTemplate redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(lettuceConnectionFactory);// 使用Jackson2JsonRedisSerializer 替換默認(rèn)的JDKSerializationRedisSerializer 來序列化和反序列化redis 的value值Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);redisTemplate.setHashKeySerializer(new StringRedisSerializer());// hash的value序列化方式采用jacksonredisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);redisTemplate.afterPropertiesSet();return redisTemplate;}
}
使用
@Autowired@Qualifier("protobufRedisTemplate")private RedisTemplate<Object, Object> protobufRedisTemplate;@Autowired@Qualifier("jsonRedisTemplate")private RedisTemplate<String, Object> redisTemplate;