重写Redis序列化方式,redis可视化工具不乱码
2022/2/10 19:14:07
本文主要是介绍重写Redis序列化方式,redis可视化工具不乱码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
当我们的数据存储到Redis的时候,我们的键(key)和值(value)都是通过Spring提供的Serializer序列化到数据库的。RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedisTemplate默认使用的是StringRedisSerializer。
Spring Data JPA为我们提供了下面的Serializer:
GenericToStringSerializer、Jackson2JsonRedisSerializer、JacksonJsonRedisSerializer、JdkSerializationRedisSerializer、OxmSerializer、StringRedisSerializer。
我们自己配置RedisTemplate并定义Serializer。
package cxy.redis; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration public class RedisConfig { @Autowired @Qualifier(value = "redisTemplate") private RedisTemplate redisTemplate; @Bean(name = "newRedisTemplate") public RedisTemplate<String, RedisCountDo> redisTemplate() { // 设置序列化 Jackson2JsonRedisSerializer<RedisCountDo> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(RedisCountDo.class); RedisSerializer stringSerializer = new StringRedisSerializer(); // key序列化 redisTemplate.setKeySerializer(stringSerializer); // value序列化 redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); // Hash key序列化 redisTemplate.setHashKeySerializer(stringSerializer); // Hash value序列化 redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; } }
使用先注入RedisConfig类
@Autowired private RedisConfig redisConfig;
然后使用方法仿照下面
@Test public void redisTest2() { RedisTemplate<String, RedisCountDo> redisTemplate = redisConfig.redisTemplate(); for (int i = 0; i < 4; i++) { // Long aLong = RandomUtil.randomLong(); Long aLong=541654546156L; String userId = new StringBuilder("AAA:BBB:").append(aLong).toString(); if (!redisTemplate.hasKey(userId)) { RedisCountDo redisCountDoSet = new RedisCountDo(new Date(), 10); redisTemplate.opsForValue().set(userId, redisCountDoSet, 1, TimeUnit.DAYS); } else { RedisCountDo redisCountDo = redisTemplate.opsForValue().get(userId); while (redisCountDo.getCount() == 0) { Long expire = redisTemplate.boundHashOps(userId).getExpire(); System.out.println(String.format("请求次数太多,请%s后再来", FormatTimeUtils.formatTime(expire))); System.exit(0); } redisCountDo.setCount(redisCountDo.getCount() - 1); redisTemplate.opsForValue().set(userId, redisCountDo, 0); System.out.println(redisCountDo); } } }
做 redisTemplate.opsForValue().set(userId, redisCountDoSet, 1, TimeUnit.DAYS);等这些读写操作.
这篇关于重写Redis序列化方式,redis可视化工具不乱码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31Tiny RDM:你的下一代Redis桌面GUI神器-icode9专业技术文章分享
- 2024-03-21redisinsight-v2
- 2024-02-26Typed property App\Api\Mapper\GamePropsConfigMapper::$apiRedis must not be accessed before initia-icode9专业技术文章分享
- 2024-02-21redisson getlock
- 2024-02-20redis config
- 2024-02-20redis leaderboard
- 2024-01-23缓存选型:Redis or MemCache
- 2024-01-22面试官:Redis持久化能关吗?怎么关?
- 2024-01-21Redis压测工具redis-benchmark-icode9专业技术文章分享
- 2024-01-19这才是你应该了解的Redis数据结构!