您的位置:首页 > 数据库 > Redis

指定RedisTemplate的序列化方式

2020-04-21 22:38 766 查看

指定RedisTemplate的序列化方式

指定序列化方式 fastJsonRedisSerializer

@Configuration
public class RedisConfig {

/**
* redisTemplate 默认的序列化方式为 JdkSerializationRedisSerializer
* StringRedisTemplate 的默认序列化方式为 StringRedisSerializer
* 使用 fastJsonRedisSerializer 替换默认序列化方式
*/
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);

FastJsonRedisSerializer<Object> fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class);

// 设置值value的序列化方式
redisTemplate.setValueSerializer(fastJsonRedisSerializer);
redisTemplate.setHashValueSerializer(fastJsonRedisSerializer);

// 设置键key的序列化方式
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());

redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}

方法

@Component
public class RedisUtil {

@Autowired
private RedisTemplate<String, Object> redisTemplate;

public void set(String key, Object value, Long time){
redisTemplate.opsForValue().set(key,  value, time, TimeUnit.SECONDS);
}

public Object get(String key){
return redisTemplate.opsForValue().get(key);
}

}

测试

@Autowired
private RedisTemplate<String, Object> redisTemplate;

@Test
void contextLoads() {
redisTemplate.opsForValue().set("user", new UserInfo("admin"));
// UserInfo user = (UserInfo) redisTemplate.opsForValue().get("user");

// 反序列化需要指定类型
Object user = redisTemplate.opsForValue().get("user");
User userInfo = JSONObject.parseObject(JSON.toJSONString(user), User.class);

}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
没有故事的安徒生 发布了3 篇原创文章 · 获赞 0 · 访问量 96 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: