Springboot整合redis 《springboot學習四》
安裝Redis
A: 開啟redis服務
redis網站官方並沒有windows版本,只有Microsoft Open Tech group 在 GitHub上開發了一個Win64的版本,地址為https://github.com/MicrosoftArchive/redis/releases 。
B:下載後解壓即可
(注意需要管理員使用者登陸),用的較多的檔案如下
-
redis-server.exe 伺服器
-
redis-cli.exe 客戶端
-
redis.windows.conf 配置檔案
C:執行redis-server.exe啟動redis伺服器
- 可以使用redis自帶客戶端連線,執行redis-cli.exe即可訪問,預設訪問的是db0。
擴充套件說一下,redis預設安裝後有db0-db15共16個庫,可以理解為mysql的庫,注意 redis分庫不會提升任何單臺redis例項的效能,這裡db0-db15庫的概念在應用當中為區分資料型別,比如db0為測試庫,db1為生產庫,因為不同db上key可以重複。
切換db使用select選擇具體庫
-
安裝Redis桌面客戶端
[下載地址](連結:https://pan.baidu.com/s/1hHQ-TrqCXA5-Nbp0x016-g
提取碼:ft61
複製這段內容後開啟百度網盤手機App,操作更方便哦)2.1 建立一個新的Name : my host:127.0.0.1 port:6379
2.2 選中db2
新增key :wanwan
value:小兔子
spring boot整合Redis
1.pom 依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <version>1.4.7.RELEASE</version> </dependency>
2. 配置Redis
直接在application.yml檔案中新增即可
注意裡面的database選擇是2,那你測試的時候就要用第二個,
不然你查不到資料,這個就相當於MySQL的資料庫名稱
spring:
redis:
database: 2
host: 127.0.0.1
port: 6379
#password
timeout: 5000
pool:
# 最大空閒連線數
max-idle: 8
# 最小空閒連線數
min-idle: 0
# 最大活躍連線數
max-active: 8
# 獲取連線時的最大等待毫秒數(-1阻塞不確定的時間)
max-wait: -1
新增完Redis之後的application-dev.yml檔案為:
logging:
config: classpath:conf/logback-dev.xml
spring:
datasource:
name: test
url: jdbc:mysql://localhost:3306/cms?characterEncoding=utf8
username: root
password: 123456
# 使用druid資料來源
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
filters: stat
maxActive: 20
initialSize: 1
maxWait: 60000
minIdle: 1
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
redis:
database: 2
host: 127.0.0.1
port: 6379
#password
timeout: 5000
pool:
# 最大空閒連線數
max-idle: 8
# 最小空閒連線數
min-idle: 0
# 最大活躍連線數
max-active: 8
# 獲取連線時的最大等待毫秒數(-1阻塞不確定的時間)
max-wait: -1
3. 開啟redis服務測試
下面的測試用的是redis的db0資料庫
package com.pf.org.cms.configuration;/**
* Created by Administrator on 2018/2/6.
*/
import redis.clients.jedis.Jedis;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
/**
* Created by hcg on 2018/2/6.
*/
public class RedisTest {
public static void main(String[] args) {
//連線本地的 Redis 服務
Jedis jedis = new Jedis("localhost");
System.out.println("連線成功");
//檢視服務是否執行
System.out.println("服務正在執行: "+jedis.ping());
//
// //連線本地的 Redis 服務
// Jedis jedis = new Jedis("localhost");
// System.out.println("連線成功");
// //設定 redis 字串資料
// jedis.set("runoobkey", "www.runoob.com");
// // 獲取儲存的資料並輸出
// System.out.println("redis 儲存的字串為: "+ jedis.get("runoobkey"));
// }
jedis.lpush("site-list", "Runoob");
jedis.lpush("site-list", "Google");
jedis.lpush("site-list", "Taobao");
// 獲取儲存的資料並輸出
List<String> list = jedis.lrange("site-list", 0 ,2);
for(int i=0; i<list.size(); i++) {
System.out.println("列表項為: "+list.get(i));
}
// 獲取資料並輸出
Set<String> keys = jedis.keys("*");
Iterator<String> it=keys.iterator() ;
while(it.hasNext()){
String key = it.next();
System.out.println(key);
}
}
}
輸出結果:
連線成功
服務正在執行: PONG
列表項為: Taobao
列表項為: Google
列表項為: Runoob
site-list
wanwan
4. 寫一個Controller測試
4.1 寫controller之前要寫service,這裡我們叫他《RedisManager》
封裝StringRedisTemplate StringRedisTemplate是Spring繼承RedisTemplate基礎上封裝的操作模板,
兩者之間的區別可以參考(http://blog.csdn.net/notsaltedfish/article/details/75948281),為了方便自己使用,再做一次封裝,也有利於瞭解StringRedisTemplate的API。
//RedisManager部分程式碼
public interface RedisManager {
/**
* 查詢字串
*
* @param key
* @return
*/
public String getStr(String key);
}
@Service(value = "redisManager")
public class RedisManagerImpl implements RedisManager {
@Autowired
private StringRedisTemplate redisTemp;
//這裡需要引入下面的包
//import org.springframework.data.redis.core.StringRedisTemplate;
@Override
public String getStr(String key) {
return redisTemp.opsForValue().get(key);
}
}
4.2 controller測試
注意:路徑一定是shiro沒有攔截的,因為之前我們定義了shiro
而且你的資料一定要在db2的資料庫上面
@RequestMapping(value = "/demo", method = RequestMethod.GET)
@ResponseBody
public String testRedis(String key) {
System.out.println("入參key為:"+key);
String s = "查詢結果為:"+redisManager.getStr(key);
return s;
}