redis将对象序列化存储
2016-04-25 20:48
716 查看
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;
}
}
序列化的对象:
先执行addObjectInfo,然后queryObjectInfo
结果:
曾孟良
1
陆燕
1
这里通过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
相关文章推荐
- redis安装问题小结
- 使用 Redis 和 Python 构建一个共享单车的应用程序
- Redis偶发连接失败案例实战记录
- Redis中实现查找某个值的范围
- redis的hGetAll函数的性能问题(记Redis那坑人的HGETALL)
- Redis和Memcached的区别详解
- 分割超大Redis数据库例子
- Redis总结笔记(一):安装和常用命令
- Redis sort 排序命令详解
- 用Redis实现微博关注关系
- Redis实现信息已读未读状态提示
- redis中修改配置文件中的端口号 密码方法
- 在Ruby on Rails上使用Redis Store的方法
- Redis和Memcache的区别总结
- 在Node.js应用中使用Redis的方法简介
- Redis服务器的启动过程分析
- web 应用中常用的各种 cache详解
- 利用yum安装Redis的方法详解
- 从MySQL到Redis的简单数据库迁移方法
- 为啥懒 Redis 是更好的 Redis