RedisストレージJavaオブジェクト(シーケンス化と逆シーケンス化)

3298 ワード

Redisのstringタイプはバイナリで安全であり,シーケンス化されたオブジェクトを格納することができる.したがってjavaオブジェクトをシーケンス化して格納し、逆シーケンス化してオブジェクトを得ることができます.
新しいmavenプロジェクトを作成し、関連するJarパッケージ依存性を追加します.

        
        
            redis.clients
            jedis
            3.2.0
        

プロジェクトが作成されたら、まず、シーケンス化と逆シーケンス化のためのツールクラスを作成します.
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class SerializeUtil {
    public static byte[] serialize(Object object) {
        ObjectOutputStream oos = null;
        ByteArrayOutputStream baos = null;
        try {
            //   
            baos = new ByteArrayOutputStream();
            oos = new ObjectOutputStream(baos);
            oos.writeObject(object);
            byte[] bytes = baos.toByteArray();
            return bytes;
        } catch (Exception e) {
            System.out.println(e);
        }
        return null;
    }

    public static Object unserialize(byte[] bytes) {
        ByteArrayInputStream bais = null;
        try {
            //    
            bais = new ByteArrayInputStream(bytes);
            ObjectInputStream ois = new ObjectInputStream(bais);
            return ois.readObject();
        } catch (Exception e) {
            System.out.println(e);
        }
        return null;
    }
}

次に、serializableインタフェースを実装する必要があるテストクラスを作成します.そうしないと、エラーが発生します.
import java.io.Serializable;

public class students implements Serializable {
    private String name="";
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

最後に、テスト実行
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class redis {
    public static void main(String[] args) {

        JedisPoolConfig poolConfig = new JedisPoolConfig();
        //      
        poolConfig.setMaxIdle(50);
        //      
        poolConfig.setMaxTotal(100);
        //        
        poolConfig.setMaxWaitMillis(20000);
        //          
        JedisPool pool = new JedisPool(poolConfig, "localhost");
        //            
        Jedis jedis = pool.getResource();
        //       
        //jedis.auth("password");
        //      Redis   
        System.out.println("    ");

        students stu = new students();
        stu.setAge(21);
        stu.setName("Henry");

        //   java  ,    Redis
        byte[] serialize = SerializeUtil.serialize(stu);
        jedis.set("student".getBytes(),  serialize);

        //         ,      java  
        byte[] result = jedis.get("student".getBytes());
        students obj =(students) SerializeUtil.unserialize(result);
        System.out.println("student: " + obj.getName()+obj.getAge());


    }
}