redis主要存储类型最常用的五种数据类型:
- String
- Hash
- List
- Set
- Sorted set
redis不能直接存取对象,如何解决呢?
两种方式
1、利用序列化和反序列化的方式
两层对象存取到redis 示例:
序列化工具类
public class SerializeUtil {
public static byte[] serialize(Object object) {
ObjectOutputStream oos = null;
ByteArrayOutputStream baos = null;
try {
//序列化
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
oos.writeObject(object);
byte[] bytes = baos.toByteArray();
return bytes;
} catch (Exception e) {
}
return null;
}
public static Object unserialize(byte[] bytes) {
ByteArrayInputStream bais = null;
try {
//反序列化
bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
return ois.readObject();
} catch (Exception e) {
}
return null;
}
}
public class Person implements Serializable {
private String pid;
private String pName;
private String nation;
private String age;
private Animal animal;
1 public class Animal implements Serializable {
2 private String aId;
3 private String color;
4 private String hobby;
5 private String aName;
在此强调必须让类实现序列化
1 public class RedisObject {
2 public static void main(String[] args) {
3 //连接本地的 Redis 服务
4 Jedis jedis = new Jedis("10.0.34.52",6379);
5 jedis.auth("");
6 System.out.println("Connection to server sucessfully");
7 //查看服务是否运行
8 System.out.println("Server is running: " + jedis.ping());
9 Person person = new Person();
10 person.setAge("15");
11 person.setNation("美国");
12 person.setpName("jim");
13 Animal animal = new Animal();
14 animal.setaId("21");
15 animal.setaName("小白");
16 animal.setColor("red");
17 person.setAnimal(animal);
18 System.out.println("序列化中");
19 jedis.set("person".getBytes(),SerializeUtil.serialize(person));
20 System.out.println("序列化成功");
21 byte[] bytes = jedis.get("person".getBytes());
22 Object object = SerializeUtil.unserialize(bytes);
23 Person person1= (Person)object;
24 System.out.println(person1);
2:将java对象转换为json字符串,利用json与java对象之间可以相互转换的方式进行存值和取值
try {
String s = JacksonUtils.getInstance().writeValueAsString(person);
System.out.println("对象转化字符串:"+s);
jedis.set("person2",s);
String person2 = jedis.get("person2");
Person person3 = JacksonUtils.getInstance().readValue(person2, Person.class);
System.out.println(person3);
} catch (IOException e) {
e.printStackTrace();
}