Redis通过IO进行序列化+反序列化

必须引用序列化Serializable接口

创建类:Role

package com.wbg.springRedis.entity;

import java.io.Serializable;

public class Role implements Serializable {
    private int id;
    private String roleName;
    private String note;
    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", roleName='" + roleName + '\'' +
                ", note='" + note + '\'' +
                '}';
    }

    public Role() {
    }

    public Role(String roleName, String note) {
        this.roleName = roleName;
        this.note = note;
    }

    public Role(int id, String roleName, String note) {
        this.id = id;
        this.roleName = roleName;
        this.note = note;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }
}

创建RoleRedisStream类(该类就是调用公共类)

package com.wbg.springRedis.redis;
import redis.clients.jedis.Jedis;

import java.io.*;
import java.util.List;

public class RoleRedisStream  {

    public  void byteArrayOutputStream(Jedis jedis, List<?> list, String key) throws IOException {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(bos);
        oos.writeObject(list);
        jedis.set(key.getBytes(),bos.toByteArray());
        oos.close();
    }

    public List<?> byteArrayInputStream(Jedis jedis,String key) throws IOException, ClassNotFoundException {
        ByteArrayInputStream bis = new ByteArrayInputStream(jedis.get(key.getBytes()));
        ObjectInputStream ois = new ObjectInputStream(bis);
        List<?> list1 = (List<?>) ois.readObject();
        ois.close();
        return list1;
    }

}

测试:

        RoleRedisStream roleRedisStream = new RoleRedisStream();
        List<Role> list = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            Role role = new Role(i, "roleName" + i, "note" + i);
            list.add(role);
        }
        //通过ObjectOutputStream序列化
        roleRedisStream.byteArrayOutputStream(new Jedis(), list,"rolee2");
        //用过ObjectInputStream反序列化
        System.out.println(roleRedisStream.byteArrayInputStream(new Jedis(), "rolee2"));

 

posted @ 2018-12-28 10:45  韦邦杠  阅读(966)  评论(0编辑  收藏  举报