redis fastjson序列化
时间: 2023-10-12 20:10:41 浏览: 110
Redis是一个非常流行的开源内存数据库,在Java应用程序中使用Redis时,通常需要将对象序列化为字节数组,然后将其存储在Redis中。而Fastjson是一个非常快速、高效的Java序列化框架,可以将Java对象快速序列化为JSON格式的字符串。下面是使用Fastjson进行Redis序列化的示例代码:
```java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import redis.clients.jedis.Jedis;
public class RedisFastjsonSerializer<T> {
private Class<T> clazz;
public RedisFastjsonSerializer(Class<T> clazz) {
this.clazz = clazz;
}
public T deserialize(byte[] bytes) {
if (bytes == null) {
return null;
}
return JSON.parseObject(bytes, clazz);
}
public byte[] serialize(T object) {
if (object == null) {
return null;
}
return JSON.toJSONBytes(object, SerializerFeature.WriteClassName);
}
public static void main(String[] args) {
// 创建一个Redis客户端
Jedis jedis = new Jedis("localhost", 6379);
// 创建一个Java对象
User user = new User("Alice", 18);
// 使用Fastjson进行序列化
RedisFastjsonSerializer<User> serializer = new RedisFastjsonSerializer<>(User.class);
byte[] bytes = serializer.serialize(user);
// 将序列化后的字节数组存储到Redis中
jedis.set("user", bytes);
// 从Redis中读取数据,并使用Fastjson进行反序列化
byte[] resultBytes = jedis.get("user");
User resultUser = serializer.deserialize(resultBytes);
// 输出结果
System.out.println(resultUser);
}
}
class User {
private String name;
private int age;
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
在上面的示例代码中,我们创建了一个User对象,并使用Fastjson进行序列化。然后将序列化后的字节数组存储到Redis中,并从Redis中读取数据,并使用Fastjson进行反序列化。最后输出结果。需要注意的是,在序列化时,我们使用了Fastjson的WriteClassName特性,这样在反序列化时就可以自动识别出对象的类型。
阅读全文