1. 程式人生 > >Spring Boot+Redis專案搭建

Spring Boot+Redis專案搭建

Redis是一個基於鍵值對的開源記憶體資料儲存,當然Redis也可以做資料快取。

1.Spring對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。

2.Spring Boot對Redis的支援

Spring Boot對Redis的支援位於org.springframework.boot.autoconfigure.redis包中。
這裡寫圖片描述
RedisAutoConfiguration為我們預設配置了JedisConnectionFactory、RedisTemplate以及StringRedisTemplate,讓我們可以直接使用Redis作為資料儲存。
RedisProperties向我們展示了可以使用以“spring.redis”為字首的屬性在application.properties中配置Redis,主要屬性如下:

這裡寫圖片描述

3.實戰

(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).程式碼

領域模型類:
這裡寫圖片描述
省略了getting、setting方法

程式碼解釋:
此類必須實現系列化介面,因為使用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).執行測試

這裡寫圖片描述
這裡寫圖片描述

這裡寫圖片描述