Kryo配合Redis使用(在SpringBoot项目中)
todo今日将Kryo融入项目中,替换掉原本的序列化工具!
Kryo是什么?Kryo时是一种快速高效的Java序列化框架 该项目的目标是速度、效率和易于使用的API。 当对象需要持久化时,无论是用于文件、数据库还是通过网络,该项目都很有用。
在SpringBoot中使用,为了提高Redis写入和节约储存,使用Kryo来代替原本的序列化工具
- 先导入kryo的Maven。
<!-- https://mvnrepository.com/artifact/com.esotericsoftware/kryo -->
<dependency>
<groupId>com.esotericsoftware</groupId>
<artifactId>kryo</artifactId>
<version>5.3.0</version>
</dependency>
使用前提需要导入Redis对应的项目包
- 编写 KryoRedisSerializerConfig (名称自取)
package com.dushuren.project.config;
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import lombok.NoArgsConstructor;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;
import org.springframework.stereotype.Component;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@Component
@NoArgsConstructor
public class KryoRedisSerializerConfig<T> implements RedisSerializer<T> {
/**
* 由于 Kryo 不是线程安全的。每个线程都应该有自己的 Kryo,Input 或 Output 实例。
* 所以,使用 ThreadLocal 存放 Kryo 对象
* 这样减少了每次使用都实例化一次 Kryo 的开销又可以保证其线程安全
*/
private static