redis实现hessain序列化反序列化
时间: 2023-11-30 08:04:56 浏览: 115
springboot 使用spring cache缓存 和 使用fastjson配置redis系列化
Redis的官方未提供Hessian序列化反序列化模块,但可以通过使用开源的Java Hessian库实现Hessian序列化与反序列化。使用步骤如下:
1. 下载Java Hessian库,将jar包添加到Java项目的classpath中。
2. 创建Hessian序列化工具类,将对象序列化成字节数组:
```
import com.caucho.hessian.io.HessianInput;
import com.caucho.hessian.io.HessianOutput;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class HessianSerializer {
public static byte[] serialize(Object obj) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
HessianOutput output = new HessianOutput(baos);
output.writeObject(obj);
return baos.toByteArray();
}
public static Object deserialize(byte[] bytes) throws IOException {
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
HessianInput input = new HessianInput(bais);
return input.readObject();
}
}
```
3. 在Redis中设置Hessian序列化:
```
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;
public class HessianRedisSerializer implements RedisSerializer<Object> {
@Override
public byte[] serialize(Object obj) throws SerializationException {
if (obj == null) {
return new byte[0];
}
try {
return HessianSerializer.serialize(obj);
} catch (IOException e) {
throw new SerializationException("Hessian serialize error", e);
}
}
@Override
public Object deserialize(byte[] bytes) throws SerializationException {
if (bytes == null || bytes.length == 0) {
return null;
}
try {
return HessianSerializer.deserialize(bytes);
} catch (IOException e) {
throw new SerializationException("Hessian deserialize error", e);
}
}
}
```
4. 在Redis配置文件中设置Hessian序列化:
```
spring.redis.serializer=com.example.redisserializer.HessianRedisSerializer
```
以上就是Redis实现Hessian序列化反序列化的简单实现方式。
阅读全文