背景描述
关于JAVA去操作Redis时,如何存储一个对象的数据,大家是非常关心的问题,虽然官方提供了存储String,List,Set等等类型,但并不满足我们现在实际应用。存储一个对象是是非常常见的。经过网上查找资料和实践操作后,整理出Redis如果存储一个对象的demo代码,如果有错误的地方大家可以留言指出。
参考资料
参考地址:
原理
在存储对象时先进行序列化,取出数据时再进行反序列化。
Redis版本
Redis3.0
https://mvnrepository.com/artifact/redis.clients/jedis
Demo如下
Bean代码
package com.obj.bean;
import java.io.Serializable;
public class Person implements Serializable {
/**
* 序列化
*/
private static final long serialVersionUID = 1L;
public String userName;
public String password;
public int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
序列化工具类代码
package com.serial.tool;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class SerializeObjectTool {
//序列化
public static byte[] serialize(Object obj) {
ObjectOutputStream obi = null;
ByteArrayOutputStream bai = null;
try {
bai = new ByteArrayOutputStream();
obi = new ObjectOutputStream(bai);
obi.writeObject(obj);
byte[] byt = bai.toByteArray();
return byt;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
// 反序列化
public static Object unserizlize(byte[] byt) {
ObjectInputStream oii = null;
ByteArrayInputStream bis = null;
bis = new ByteArrayInputStream(byt);
try {
oii = new ObjectInputStream(bis);
Object obj = oii.readObject();
return obj;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
测试代码
package com.redis.client;
import com.obj.bean.Person;
import com.serial.www.dfgjpt.com/ tool.SerializeObjectTool;
import redis.clients.jedis.Jedis;
public class RedisObjectClient www.gouyiflb.cn{
public static void main(String[] args) {
// TODO Auto-generated method stub
Jedis redis = new Jedis(www.thd178.com"10.190.130.143", 6379);
redis.auth("sa123456");
// 存对象
Person p = new Person(); // peson类记得实现序列化接口 Serializable
p.setAge(20);
p.setUserName("姚波");
p.setPassword("123456");
byte[] personByte = SerializeObjectTool.serialize(p);
redis.set("person".getBytes(www.dasheng178.com/), personByte);
//取对象
byte[] byt = redis.get("person".getBytes());
Object obj = SerializeObjectTool. www.tygj178.com unserizlize(byt);
if (obj instanceof Person) {
System.out.println(www.michenggw.com ((Person) obj).getUserName());
System.out.println(((Person) obj).getPassword());
System.out.println(((Person) obj).getAge());
}
}
}
运行结果
Java操作Redis存储对象类型数据
最新推荐文章于 2024-04-24 13:12:35 发布