使用Spring-data进行Redis操作

使用Spring-data进行Redis操作 http://zhaozhiming.github.io/blog/2015/04/12/spring-data-redis/
Redis整合Spring结合使用缓存实例 http://blog.csdn.net/evankaka/article/details/50396325
征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL) http://snowolf.iteye.com/blog/1666908

Redis相信大家都听说过,它是一个开源的key-value缓存数据库,有很多Java的客户端支持,比较有名的有Jedis,JRedis等(见这里)。当然我们可以使用客户端的原生代码实现redis的操作,但实际上在spring中就已经集成了这些客户端的使用,下面我们就以Jedis为例来介绍一下Spring中关于Redis的配置。
下载相关依赖包
首先要下载spring和redis相关的依赖包,最新的jedis版本是2.6.2,还需要下载jackson的包,这个后面会介绍为什么需要,以gradle脚本示例如下。
build.gradle

spring配置jedis
在spring的xml配置文件中,做如下配置。

序列化
在spring中进行redis存储,如果没有对key和value进行序列化,保存到redis中会出现乱码。注意看上面的redis模板配置,有个配置项是defaultSerializer,这里表示redis中的key和value遇到需要序列化的时候,都默认使用StringRedisSerializer这个类来进行序列化。如果不指定序列化的话,内容会带乱码。
spring-data-redis的序列化类有下面这几个:
GenericToStringSerializer: 可以将任何对象泛化为字符串并序列化
Jackson2JsonRedisSerializer: 跟JacksonJsonRedisSerializer实际上是一样的
JacksonJsonRedisSerializer: 序列化object对象为json字符串
JdkSerializationRedisSerializer: 序列化java对象
StringRedisSerializer: 简单的字符串序列化

一般如果key-value都是string的话,使用StringRedisSerializer就可以了,如果需要保存对象为json的话推荐使用JacksonJsonRedisSerializer,它不仅可以将对象序列化,还可以将对象转换为json字符串并保存到redis中,但需要和jackson配合一起使用。
简单的redis操作
代码示例如下,使用redis进行set和get操作。
MyUserRepository.java

调用set方法后,可以在日志中看到get后的MyUser对象。
– my user:MyUser{age=100, username=’zhaozhiming’}
也可以在redis里面看到保存后的json字符串了。

一个工具类: RedisUtil 是用来缓存和去除数据的实例, 如果没必要, 请改成
private RedisTemplate<String, Object> redisTemplate;