redis是一种nosql的语言,常用来作为缓存,而且redis是一种高性能的存储架构,是以key value方式存储
这里通过jedis来序列化对象来存入redis中
编写序列化工具类,大家应该都不默认,序列化,就是流化,将其转为字节码byte,然后我们一般是通过对象流来实现的
package com.jedis.aisainfo;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
public class SerializeUtil {
/**
* 序列化
* @param list
* @return
*/
public static byte[] serialize(List<User> list){
//申明存放数组
byte[] arr = null;
//对象流,用于序列化对象
ObjectOutputStream os = null;
//临时输入流
ByteArrayOutputStream bos=null;
try {
bos = new ByteArrayOutputStream();
os = new ObjectOutputStream(bos);
os.writeObject(list);
arr=bos.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return arr;
}
/**
* 反序列化
* @param in
* @return
*/
public static List<User> unserialize(byte[] in){
List<User> list = null;
//临时输入流
ByteArrayInputStream bis = null;
//读取对象流
ObjectInputStream ois =null;
try {
list = new ArrayList<User>();
bis = new ByteArrayInputStream(in);
ois = new ObjectInputStream(bis);
list = (List<User>)ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
ois.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return list;
}
}
序列化的对象: package com.jedis.aisainfo;
import java.io.Serializable;
public class User implements Serializable{
private Integer id;
private String username;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username == null ? null : username.trim();
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
测试类: private Jedis jedis=null;
@Before
public void init(){
jedis = new Jedis("localhost");
}
@Test
public void addObjectInfo(){
List<User> list = new ArrayList();
User user1 = new User();
user1.setAge(1);
user1.setUsername("曾孟良");
user1.setId(1);
User user2 = new User();
user2.setAge(1);
user2.setUsername("陆燕");
user2.setId(1);
list.add(user1);
list.add(user2);
jedis.set("user".getBytes(), SerializeUtil.serialize(list));
}
@Test
public void queryObjectInfo(){
byte[] users = jedis.get("user".getBytes());
List<User> list = SerializeUtil.unserialize(users);
for(User user:list){
System.out.println(user.getUsername());
System.out.println(user.getId());
}
}
先执行addObjectInfo,然后queryObjectInfo
结果:
曾孟良
1
陆燕
1