添加依赖
<!-- redis对象存储 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.esotericsoftware</groupId>
<artifactId>kryo</artifactId>
<version>4.0.0</version>
</dependency>
KryoSerializeUtil.java
import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
* 使用Kryo
* 把java对象序列化和反序列化
* 虽然所序列化和反序列化的类无需实现java.io.Serializable接口,
* 但还是建议实现java.io.Serializable接口,避免类修改后无法反序列化
*/
public class KryoSerializeUtil {
/**
* 把java对象序列化成byte数组
*
* @param object
* @return
*/
public static byte[] serialize(Object object) {
if (object == null) {
return null;
}
ByteArrayOutputStream baos = null;
Output output = null;
try {
Kryo kryo = new Kryo();
baos = new ByteArrayOutputStream();
output = new Output(baos);
kryo.writeObject(output, object);
output.flush();
return baos.toByteArray();
} finally {
try {
if (baos != null) baos.close();
} catch (IOException e) {
e.printStackTrace();
}
output.close();
}
}
/**
* 把byte数组反序列化得到java对象
*
* @param bytes
* @param clazz
* @return
*/
public static <T> T unserialize(byte[] bytes, Class<T> clazz) {
if (bytes == null || bytes.length == 0) {
return null;
}
Kryo kryo = new Kryo();
Input input = new Input(bytes);
T obj = kryo.readObject(input, clazz);
input.close();
return obj;
}
}
Redis配置文件
#redis配置开始
redis:
database: 0 # Redis数据库索引(默认为0)
host: localhost # Redis服务器地址
port: 6379 # Redis服务器连接端口
password: 941218 # Redis服务器连接密码(默认为空)
jedis:
pool:
max-active: 128 # 连接池最大连接数(使用负值表示没有限制)
max-wait: 3000 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 128 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接
timeout: 5000 # 连接超时时间(毫秒)
block-when-exhausted: true # 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
RedisConfig.java
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springf