将java对象存储到redis数据库(使用序列化和反序列化)
2016-08-10 11:58
716 查看
redis不支持直接将java对象存储到数据库中,所以需要将java对象进行序列化得到字节数组,然后将字节数组存入到redis中,需要数据的时候就从redis数据库中取出字节数组,再经过反序列化将自己数组转换成对象使用(jdk序列化性能比谷歌公司的Protobuf序列化性能要差一些,而且序列化后的字节长度要也会长一些,所以推荐使用Protobuf,Protobuf如何进行序列化请看我的另一篇帖子)
实体类
User.java
SerializeUtils.java
实体类
User.java
import java.io.Serializable; public class User implements Serializable{ private static final long serialVersionUID = 2724888087391664167L; private String id; private String username; private String password; public User() { } public User(String id, String username, String password) { this.id = id; this.username = username; this.password = password; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public static long getSerialversionuid() { return serialVersionUID; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", password=" + password + "]"; } }序列化反序列化工具类
SerializeUtils.java
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class SerializeUtils { public static byte[] serialize(Object obj){ byte[] bytes = null; try { ByteArrayOutputStream baos=new ByteArrayOutputStream();; ObjectOutputStream oos=new ObjectOutputStream(baos); oos.writeObject(obj); bytes=baos.toByteArray(); baos.close(); oos.close(); } catch (IOException e) { e.printStackTrace(); } return bytes; } public static Object deSerialize(byte[] bytes){ Object obj=null; try { ByteArrayInputStream bais=new ByteArrayInputStream(bytes); ObjectInputStream ois=new ObjectInputStream(bais); obj=ois.readObject(); } catch (Exception e) { e.printStackTrace(); } return obj; } }测试类RedisTest.java
import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.junit.Test; import redis.clients.jedis.Jedis; public class RedisTest{ private static Jedis jedis; static{ //访问本地redis jedis = new Jedis("127.0.0.1",6379); } @Test public void serialize(){ User user=new User("1000", "宝宝", "xioabao"); jedis.set(user.getId().getBytes(), SerializeUtils.serialize(user)); byte[] bytes=jedis.get(user.getId().getBytes()); System.out.println((User)SerializeUtils.deSerialize(bytes)); } }
相关文章推荐
- 将java对象存储到redis数据库(使用序列化和反序列化)
- 将java对象存储到redis数据库(使用序列化和反序列化)
- 将java对象存储到redis数据库的序列化和反序列化
- Redis– Jedis存储Java对象 - (Java序列化为byte数组方式) Java 序列化和反序列化
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
- 使用redis存储Java对象
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
- Java对象以Blob存储,及序列化反序列化 (3)
- java Redis Jedis存储Java对象 - (Java序列化为byte数组方式)
- 使用Java序列化把对象存储到文件中,再从文件中读出来
- Java对象的序列化和反序列化及其实现和使用
- java对象序列化并存储到文件和数据库
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
- java----序列化与反序列化中及java序列化本质就是存储一个对象,然后在其他地方在调用它
- Java对象以Blob存储,及序列化反序列化 (1)
- Jedis和JAVA对象的序列化和反序列化的使用
- 使用XStream对Java对象进行序列化和反序列化
- redis使用详解之在redis中存储java对象
- 【json】使用json和java对象的序列化和反序列化