1. 程式人生 > >Springboot整合redis 《springboot學習四》

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伺服器
  1. 可以使用redis自帶客戶端連線,執行redis-cli.exe即可訪問,預設訪問的是db0。

擴充套件說一下,redis預設安裝後有db0-db15共16個庫,可以理解為mysql的庫,注意 redis分庫不會提升任何單臺redis例項的效能,這裡db0-db15庫的概念在應用當中為區分資料型別,比如db0為測試庫,db1為生產庫,因為不同db上key可以重複。
切換db使用select選擇具體庫

  1. 安裝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;
}