在java的 spring boot项目中使用Redis做缓存。
操作是
1.首先在POM文件中加入redis依赖,
2.在application.yml中添加redis的路径、端口和密码
spring:
redis:
host: xxx.xxx.xxx.xxx
port: xxxxx
password: xxxx
3.在config包下面添加一个配置类
配置RedisTemplate
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory)
{
// StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// RedisObjectSerializer redisObjectSerializer = new RedisObjectSerializer();
// RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
// template.setConnectionFactory(redisConnectionFactory);
// template.setKeySerializer(stringRedisSerializer);
// template.setValueSerializer(redisObjectSerializer);
// return template;
RedisTemplate<String, Object> template = new RedisTemplate<>();
//使用fastjson序列化---此处使用的StringRedis序列化方式
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// value值的序列化采用 StringRedisSerializer
template.setValueSerializer(stringRedisSerializer);
template.setHashValueSerializer(stringRedisSerializer);
// key的序列化采用StringRedisSerializer
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
Redis知识补充:
Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串)、List(列表)、Set(集合)、Hash(散列)和 Zset(有序集合)。
针对数据的“序列化/反序列化”,提供了多种可选择策略(RedisSerializer)
1.JdkSerializationRedisSerializer:POJO对象的存取场景,使用JDK本身序列化机制,将pojo类通过ObjectInputStream/ObjectOutputStream进行序列化操作,最终redis-server中将存储字节序列。是目前最常用的序列化策略。
2.StringRedisSerializer:Key或者value为字符串的场景,根据指定的charset对数据的字节序列编码成string,是“newString(bytes,charset)”和“string.getBytes(charset)”的直接封装。是最轻量级和高效的策略。
3.JacksonJsonRedisSerializer:jackson-json工具提供了javabean与json之间的转换能力,可以将pojo实例序列化成json格式存储在redis中,也可以将json格式的数据转换成pojo实例。因为jackson工具在序列化和反序列化时,需要明确指定Class类型,因此此策略封装起来稍微复杂。
4.OxmSerializer:提供了将javabean与xml之间的转换能力,目前可用的三方支持包括jaxb,apache-xmlbeans;redis存储的数据将是xml工具。不过使用此策略,编程将会有些难度,而且效率最低;不建议使用。【需要spring-oxm模块的支持】