Redis不支持直接将Java对象存储到数据库中,所以需要将java对象进行序列化得到字节数组,然后将字节数组存入到redis中,需要数据的时候就从redis数据库中取出字节数组,再经过反序列化将自己数组转换成对象使用(jdk序列化性能比谷歌公司的Protobuf序列化性能要差一些,而且序列化后的字节长度要也会长一些,所以推荐使用Protobuf,Protobuf如何进行序列化请看我的另一篇帖子)
实体类
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;
- }
- }
- 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));
- }
- }
http://blog.youkuaiyun.com/xiaobao5214/article/details/52169712