SpringBoot對經常使用的數據庫支持外,對NoSQL 數據庫也進行了封裝自動化。git
Redis是目前業界使用最普遍的內存數據存儲。相比memcached,Redis支持更豐富的數據結構,例如hashes, lists, sets等,同時支持數據持久化。除此以外,Redis還提供一些類數據庫的特性,好比事務,HA,主從庫。能夠說Redis兼具了緩存系統和數據庫的一些特性,所以有着豐富的應用場景。本文介紹Redis在Spring Boot中兩個典型的應用場景。github
一、引入 spring-boot-starter-redisredis
1spring 2數據庫 3segmentfault 4緩存 |
|
二、添加配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
三、添加cache的配置類
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
|
四、好了,接下來就能夠直接使用了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
以上都是手動使用的方式,如何在查找數據庫的時候自動使用緩存呢,看下面;
五、自動根據方法生成緩存
1 2 3 4 5 6 7 |
|
其中value的值就是緩存到redis中的key
分佈式系統中,sessiong共享有不少的解決方案,其中託管到緩存中應該是最經常使用的方案之一,
Spring Session provides an API and implementations for managing a user’s session information.
一、引入依賴
1 2 3 4 |
|
二、Session配置:
1 2 3 4 |
|
maxInactiveIntervalInSeconds: 設置Session失效時間,使用Redis Session以後,原Boot的server.session.timeout屬性再也不生效
好了,這樣就配置好了,咱們來測試一下
三、測試
添加測試方法獲取sessionid
1 2 3 4 5 6 7 8 9 |
|
登陸redis 輸入 keys ‘*sessions*’
1 2 |
|
其中 1472976480000爲失效時間,意思是這個時間後session失效,db031986-8ecc-48d6-b471-b137a3ed6bc4 爲sessionId,登陸http://localhost:8080/uid 發現會一致,就說明session 已經在redis裏面進行有效的管理了。
其實就是按照上面的步驟在另外一個項目中再次配置一次,啓動後自動就進行了session共享。