redis是一个内存数据库, 所有数据基本上都存在内存中, 会定时以追加或者快照的方式刷新到硬盘中。相比其它数据库把数据保存在硬板上redis的读取写入的速度是非常快的, 所以经常被用来做数据的缓存从而替代一些查询数据库的查询,进而提高查询效率。
以MySQL为例使用Redis缓存其中一些表,Spring-data-redis提供了
StringRedisTemplate和
RedisTemplate<Object,Object>`两个实例,但是两个实例均不满足我们当前的需求,所以我们需要自定义RedisTemplate。
@Configuration
public class RedisConfiguration {
@Bean
public RedisTemplate<String, Object> stringObjectRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
template.setKeySerializer(RedisSerializer.string());
template.setValueSerializer(RedisSerializer.java());
return template;
}
}
这样使用RedisTemplate<String,Object>就可以将类对象存进redis,其作用就是如何将数据序列化与反序列化,可以看到代码内就是做的这个事情:
template.setKeySerializer(RedisSerializer.string());
template.setValueSerializer(RedisSerializer.java());
这两个方法规定了将redis里的数据与java代码里的数据类型如何映射。
注意使用了Redis做数据的缓存,就要警惕数据的更新,如果数据库里的数据发生变动,相应的Redis里面的数据也要及时修正。