Redis是一个基于键值对的开源内存数据存储,当然Redis也可以做数据缓存。
(1).配置
Spring对Redis的支持也是通过Spring Data Redis来实现的,Spring Data JPA为我们提供了连接相关的ConnectionFactory和数据操作相关的RedisTemplate。在此特别指出,Spring Data Redis只对Redis 2.6和2.8 版本做过测试。
根据Redis的不同的java客户端,Spring Data Redis提供了如下的ConnectionFactory:
JedisConnectionFactory:使用Jedis作为Redis客户端
JredisConnectionFactory:使用Jredis作为Redis客户端
LettuceConnectionFactory:使用Lettuce作为Redis客户端
SrpConnectionFactory:使用Spullara/redis-protocol作为Redis客户端
配置方式如下:
@Bean
Public RedisConnectionFactory redisConnectionFactory() {
return new JedisConnectionFactory();
}
RedisTemplate配置方式如下:
@Bean
Public RedisTemplate<Object, Object> redisTemplate() throws UnknownHostException {
RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>();
Template.setConnectionFactory(redisConnectionFactory());
return template;
}
(2).使用
Spring Data Redis为我们提供了RedisTemplate和StringRedisTemplate两个模板来进行数据操作,其中,StringRedisTemplate只针对键值都是字符型的数据进行操作。
RedisTemplate和StringRedisTemplate提供的主要数据访问方法如下:
opsForValue():操作只有简单属性的数据
opsForList():操作含有list的数据
opsForSet():操作只有set的数据
opsForZSet():操作只有ZSet(有序的set)的数据
opsForHash():操作只有hash的数据
(3).定义Serializer
当我们的数据存储到Redis的时候,我们的键(key)和值(value)都是通过Spring提供的Serializer序列化到数据库的。
RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedisTemplate默认使用的是StringRedisSerializer。
Spring Boot对Redis的支持位于org.springframework.boot.autoconfigure.redis包中。
RedisAutoConfiguration为我们默认配置了JedisConnectionFactory、RedisTemplate以及StringRedisTemplate,让我们可以直接使用Redis作为数据存储。
RedisProperties向我们展示了可以使用以“spring.redis”为前缀的属性在application.properties中配置Redis,主要属性如下:
(1).安装Redis
非Docker安装:去http://redis.io/download下载适合版本的Redis
Docker安装:先下载好Redis镜像,然后通过下面命令运行容器
Docker run -d -p 6379:6379 redis redis-server
并在VirtualBox配置端口映射,如图:
Redis数据管理可以使用Redis Client,下载地址为https://github.com/caoxinyu/RedisClient,安装完成后如图:
(2).新建Spring Boot项目
搭建Spring Boot项目,依赖为Redis(spring-boot-starter-redis)和Web(spring-boot-starter-web)。
项目结构与配置如下:
(3).代码
代码解释:
此类必须实现系列化接口,因为使用Jackson做序列化需要一个空构造函数。
代码解释:
1.Spring Boot已为我们配置StringRedisTemplate,在此处可以直接注入
2.Spring Boot已为我们配置RedisTemplate,在此处可以直接注入
3.可以使用@Resource注解指定stringRedisTemplate,可注入基于字符串的简单属性操作方法
4.可以使用@Resource注解指定redisTemplate,可注入基于对象的简单属性操作方法
配置
Spring Boot为我们自动配置了RedisTemplate,而RedisTemplate使用的是JdkSerializationRedisSerializer,这个对我们演示的Redis Client很不直观,因为JdkSerializationRedisSerializer使用而径直形式存储数据的,所以在此我们将自动配置RedisTemplate并定义Serializer。 代码如下:
代码解释:
1.设置值(value)的序列化采用Jackson2JsonRedisSerializer
2.设置键(key)的序列化采用StringRedisSerializer
(4).运行测试
访问http://localhost:8084/set,此处查看Redis Client。如下:
访问http://localhost:8084/getStr,页面显示如下: