我们在开发中,前后端传递对象是通过json格式,阿里巴巴有一个插件,就可以将我们创建的对象转化为json格式。

创建springboot项目,里面就集成了,我们使用的时候,直接创建这个jscksion的对象就可以了。具体的使用如下:

创建实体类

@Component
@AllArgsConstructor
@NoArgsConstructor
@Data
public class User {
   

    private  String name;
    private int age;
}

往redis里面直接存储对象

    @Test
    void test1() throws JsonProcessingException {
   
        User liu = new User("刘", 3);
        redisTemplate.opsForValue().set("user",liu);
        System.out.println(redisTemplate.opsForValue().get("user"));
    }

会报错

原因是我们的对象没有序列化,如何改变呢?直接在实体类上面实现序列化接口

@Component
@AllArgsConstructor
@NoArgsConstructor
@Data
public class User  implements Serializable {
   

    private  String name;
    private int age;
}

这样就可以将对象直接存储在redis里面了。一般企业中的实体类都要序列化。

经常需要向Redis中保存Java中Object或List等类型,这个时候就需要通过序列化器把Java中对象转换为字符串进行存储。

自己写的redistemplates的配置

@Configuration
public class RedisConfig {
   
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
            throws UnknownHostException {
   
// 我们为了开发方便,一般使用<String, Object>
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);


// String 的序列化 对象
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();

// key采用String的序列化方式
        template.setKeySerializer(stringRedisSerializer);
// hash 的key采用String类型的序列化方式
        template.setHashKeySerializer(stringRedisSerializer);
// value 序列化方式使用Jackson
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
// hash 的value序列化采用Jackson
        template.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        template.afterPropertiesSet();
        return template;
    }
}
@SpringBootTest
class SpringbootRedisApplicationTests {
   
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    @Test
    void contextLoads() {
   

        redisTemplate.opsForValue().set("ff","dd");
        System.out.println(redisTemplate.opsForValue().get("ff"));
    }

    @Test
    void test1() throws JsonProcessingException {
   
        User liu = new User("刘", 3);
        redisTemplate.opsForValue().set("user",liu);
        System.out.println(redisTemplate.opsForValue().get("user"));
    }

}