RedisストレージJavaオブジェクト(シーケンス化と逆シーケンス化)
3298 ワード
Redisのstringタイプはバイナリで安全であり,シーケンス化されたオブジェクトを格納することができる.したがってjavaオブジェクトをシーケンス化して格納し、逆シーケンス化してオブジェクトを得ることができます.
新しいmavenプロジェクトを作成し、関連するJarパッケージ依存性を追加します.
プロジェクトが作成されたら、まず、シーケンス化と逆シーケンス化のためのツールクラスを作成します.
次に、serializableインタフェースを実装する必要があるテストクラスを作成します.そうしないと、エラーが発生します.
最後に、テスト実行
新しい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());
}
}