ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
若不设置序列化规则,它将使用JDK自动的序列化将对象转换为字节,存到Redis 里面 它可以存在对象到redis里面 如果对象没有序列化,那么默认使用的JDK的序列化方式 ![](https://img.kancloud.cn/b4/ec/b4ec1a09510c2f11086d353e69d01bf4_742x400.png) /\*\* \* 测试 \* @author LJH \* \*/ @RunWith(SpringRunner.class) @SpringBootTest public class SpringbootRedisTemplateTests { @Autowired private RedisTemplate<Object, Object> redisTemplate ; // 因为创建RedisTemplate 没有使用泛型信息来创建,泛型 本质还是Object,只不过泛型能自动推断并强转 ​ ​ @Test public void testString() { redisTemplate.setKeySerializer(new StringRedisSerializer()); // key的序列化使用String 类型来完成 因为key 很多时候都是一个字符串 redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); // 优先没有泛型的,因为有泛型后,它支持的数据类型就定了 ValueOperations<Object, Object> valueOperations = redisTemplate.opsForValue(); // valueOperations.set("boot-redis", "boot-value"); //对象->字符串 json User user = new User(1, "laolei", "xx.jpg", "78414842@qq.com"); // KEY : com.sxt.domain.User:1 // com.fasterxml.jackson.databind.JsonSerializer 没有依赖jackson 之前大家可能使用spring-boot-web,这里面会自动依赖 valueOperations.set(User.class.getName()+":"+user.getId(), user); // 若该对象的强转转换,则redis 内部会使用JackSon 的工具将字符串-> 转换为java 对象 ,那jackson 转换为对象时,需要一个对象的类型 ,其实它已经自动对象的类型了"@class": "com.sxt.domain.User", User object = (User)valueOperations.get(User.class.getName()+":"+user.getId()); System.out.println(object.getName()+":"+object.getIcon()); } /\*\* \* hash \*/ @Test public void testHash() { redisTemplate.setKeySerializer(new StringRedisSerializer()); // key的序列化使用String 类型来完成 因为key 很多时候都是一个字符串 redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueSerializer(new StringRedisSerializer()); // 若都是string 则和StringRedisTempalte一样了 HashOperations<Object, Object, Object> opsForHash = redisTemplate.opsForHash(); opsForHash.put("redis-hash", "prop1", "value"); } } - - - - - -