Redis存储自定义对象类型

参考文章
https://blog.csdn.net/u011499747/article/details/78762007

介绍

存储自定义的对象的时候,也吃能采用字符串的存储方式。
这时候就要采用序列化的方式。而序列化就不要让类继承Serializable了。使用功能jackson更加方便。在jackson中使用ObjectMapper这个基本类。

可以看出它已经继承了Serializable,自己进行序列化。所以使用起来很方便。

依赖

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.2</version>
</dependency>

这里引入了三个jackson的依赖,然而不必,因为jackson-databind依赖core和annotations。只要引入

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.2</version>
</dependency>

一个就行,他会自动解决依赖关系。

然后创建实体对象。

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private Integer id;
    private String name;
    private String location;
}

利用ObjectMapper序列化存入redis

    @Test
    public void test05(){
        Student s = new Student(1001,"张坤", "上海");
        ObjectMapper obj = new ObjectMapper();
        //Object->json
        try {
            String json = obj.writeValueAsString(s);
            //{"id":"1001","name":"张坤", "location":"上海"}
            redisTemplate.opsForValue().set("student", json);

        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }

取出来然后再用ObjectMapper来反序列化

    @Test
    public void test06() throws IOException {
        ObjectMapper obj = new ObjectMapper();
        String json = redisTemplate.opsForValue().get("student");
        Student s = obj.readValue(json,Student.class);
        System.out.println(s);
    }

完工

那么如何存储结合呢

一样的,集合也是一个类。和类序列化的过程是一样的。

猜你喜欢

转载自www.cnblogs.com/macht/p/11845064.html
今日推荐