1. 程式人生 > >SpringBoot 2.0 整合Jedis

SpringBoot 2.0 整合Jedis

Jedis介紹

jedis是封裝了redis的java客戶端,提供了更簡單的redis操作API,同時SpringBoot也將redis做了封裝,但是用來直接操作redis步驟繁瑣。

redis配置檔案

1 . 引入redis

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2 . 配置redis連線屬性

說明:SpringBoot會根據application.properties中的配置檔案,對SpringBoot整合的redis進行自動的配置,將屬性檔案自動注入到org.springframework.boot.autoconfigure.data.redis.RedisProperties類中,

        #redis配置
        ################################################

        #redis資料庫索引(預設為0)
        spring.redis.database=0
        #redis伺服器IP地址
spring.redis.host= #redis埠號 spring.redis.port=6379 #redis密碼,預設為空 spring.redis.password= #連線redis超時時間(毫秒) spring.redis.time-out=0ms #jedis連線池 ############################### #最大等待時間 spring.redis.jedis.pool.max-wait=1000
ms #最小空閒數量 spring.redis.jedis.pool.min-idle=1 #最大空閒數量 spring.redis.jedis.pool.max-idle=10 #最大連線數量 spring.redis.jedis.pool.max-active=1000

3 . 關於RedisProperties類的原始碼分析:

package org.springframework.boot.autoconfigure.data.redis;

import java.time.Duration;
import java.util.List;

import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * Configuration properties for Redis.(redis的屬性配置類)
 */
@ConfigurationProperties(prefix = "spring.redis")
public class RedisProperties {

    /**
     * Database index used by the connection factory.
     */
    private int database = 0;

    /**
     * Connection URL. Overrides host, port, and password. User is ignored. Example:
     * redis://user:[email protected]:6379
     */
    private String url;

    /**
     * Redis server host.
     */
    private String host = "localhost";

    /**
     * Login password of the redis server.
     */
    private String password;

    /**
     * Redis server port.
     */
    private int port = 6379;

    /**
     * Whether to enable SSL support.
     */
    private boolean ssl;

    /**
     * Connection timeout.
     */
    private Duration timeout;

    private Sentinel sentinel;

    private Cluster cluster;

    private final Jedis jedis = new Jedis();

    private final Lettuce lettuce = new Lettuce();

    /**
    *此處省略了所有的get set方法
    */

    /**
     * Pool properties.(連線池的配置資訊)
     */
    public static class Pool {

        /**
         * Maximum number of "idle" connections in the pool. Use a negative value to
         * indicate an unlimited number of idle connections.
         */
        private int maxIdle = 8;

        /**
         * Target for the minimum number of idle connections to maintain in the pool. This
         * setting only has an effect if it is positive.
         */
        private int minIdle = 0;

        /**
         * Maximum number of connections that can be allocated by the pool at a given
         * time. Use a negative value for no limit.
         */
        private int maxActive = 8;

        /**
         * Maximum amount of time a connection allocation should block before throwing an
         * exception when the pool is exhausted. Use a negative value to block
         * indefinitely.
         */
        private Duration maxWait = Duration.ofMillis(-1);
        /**
        *省略了關於連線池屬性資訊的get set方法
        */
    }

    /**
     * Cluster properties.(叢集配置資訊)
     */
    public static class Cluster {

        /**
         * Comma-separated list of "host:port" pairs to bootstrap from. This represents an
         * "initial" list of cluster nodes and is required to have at least one entry.
         */
        private List<String> nodes;

        /**
         * Maximum number of redirects to follow when executing commands across the
         * cluster.
         */
        private Integer maxRedirects;
        /**
        *省略了關於叢集配置資訊的get set方法
        */

    }

    /**
     * Redis sentinel properties.(哨兵屬性資訊)
     */
    public static class Sentinel {

        /**
         * Name of the Redis server.
         */
        private String master;

        /**
         * Comma-separated list of "host:port" pairs.
         */
        private List<String> nodes;
        /**
        *省略了關於哨兵屬性資訊的get set方法
        */

    }

    /**
     * Jedis client properties.(redis的客戶端jedis)
     */
    public static class Jedis {

        /**
         * Jedis pool configuration.
         */
        private Pool pool;
        /**
        *省略了關於jedis屬性資訊的get set方法
        */

    }

    /**
     * Lettuce client properties.
     */
    public static class Lettuce {

        /**
         * Shutdown timeout.
         */
        private Duration shutdownTimeout = Duration.ofMillis(100);

        /**
         * Lettuce pool configuration.
         */
        private Pool pool;
    }

}

Jedis配置

1 . 引入jedis客戶端依賴

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

2 . 建立JedisPoolFactory類,用來配置JedisPool屬性資訊,以及建立RedisPool

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

@Configuration
public class JedisPoolFactory {

    //自動注入redis配置屬性檔案
    @Autowired
    private RedisProperties properties;

    @Bean
    public JedisPool getJedisPool(){
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxIdle(properties.getJedis().getPool().getMaxIdle());
        config.setMaxTotal(properties.getJedis().getPool().getMaxActive());
        config.setMaxWaitMillis(properties.getJedis().getPool().getMaxWait().toMillis());
        JedisPool pool = new JedisPool(config,properties.getHost(),properties.getPort(),100);
        return pool;
    }
}

通過SpringBoot容器來自動建立以及注入JedisPool

    @Autowired
    private JedisPool jedisPool;

至此,便可以使用jedisPool.getResource();方法來獲取Jedis來操作redis資料庫了

相關推薦

SpringBoot 2.0 整合Jedis

Jedis介紹 jedis是封裝了redis的java客戶端,提供了更簡單的redis操作API,同時SpringBoot也將redis做了封裝,但是用來直接操作redis步驟繁瑣。 redis配置檔案 1 . 引入redis <depend

springboot 2.0整合activiti(1)

springboot 2.0整合activiti(1) 踩坑經歷 增加Maven依賴 生成activiti資料表 踩坑經歷 截止到現在activiti7只有beta版本,嘗試採用activiti6完成工作流任務。

springboot 2.0 整合 RestTemplate 與使用教程

首先匯入springboot 的 web 包 <dependency> <groupId>org.springframework.boot</groupId> <art

springboot 2.0 整合 Activiti5.22包括流程跟蹤和線上設計

spring boot 2.0 整合 Activiti 5.22 其實Github上的 Activiti 官方倉庫已經提供了相應的starter Activiti的starter倉庫地址:https://github.com/Activiti/Activiti/tree/5.x/mo

Springboot 2.0整合JSP與JSP的熱部署

整合JSP 1、在pom.xml中加上以下依賴 <dependency> <groupId>org.springframework.boot</groupId> <

SpringBoot 2.0 整合sharding-jdbc中介軟體,實現資料分庫分表

一、水平分割 1、水平分庫 1)、概念: 以欄位為依據,按照一定策略,將一個庫中的資料拆分到多個庫中。 2)、結果 每個庫的結構都

SpringBoot 2.0整合阿里雲OSS,實現動靜分離架構

前言 相信大部分開發者對下面這張架構圖並不陌生吧,現在很多網站/應用都採用了動靜分離的架構進行部署。博主的部落格也不例外,主機採用的是阿里雲的 ECS,使用 CDN 做靜態內容分發,不過靜態檔案還是儲存在 ECS,採用的是 Nginx 做動靜分離。今天我們來學習一下如何使用阿里雲 OSS 做動靜分離。

SpringBoot(2.0.4.RELEASE)+Elasticsearch(6.2.4)+Gradle簡單整合

png etc type .com () 簡單 import true not 記錄一下SpringBoot(2.0.4.RELEASE)+Elasticsearch(6.2.4)+Gradle整合的一個小例子。 1.在Gradle內加入相關jar包的依賴: com

SpringBoot從入門到放棄》之第(十)篇——整合Redis(SpringBoot 2.0 版本),寫於2018年10月24號程式設計師節。

在 pom.xml 配置中新增 jar 依賴: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-d

Springboot 2.0.x 整合Redis快取

文章目錄 Springboot 2.0.x 整合Redis快取 1、引入Redis快取依賴 2、配置Redis 資料庫 3、配置Redis CacheManager

SpringBoot 2.0 | SpringBoot 整合 Redis + Cache + 分散式 Session

簡介 1.Redis redis是一個key-value儲存系統。它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合) 和hash(雜湊型別)。這些資料型別都支援push/pop、add/remove及取交集並集和差集及更豐富的操作,

SpringBoot 2.0 | SpringBoot 整合前端框架 Vue

1.簡介 Vue與 Angular,React 是目前前端三大框架,Vue 是一套用於構建使用者介面的漸進式框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用。Vue 的核心庫只關注檢視層,不僅易於上手,還便於與第三方庫或既有專案整合。另一方面,當與現代化的工具鏈以及

springboot 2.0 教程-10-整合訊息中介軟體

閱讀原文:https://blog.bywind.cn/articles/2018/11/28/1543373589258.html 視訊教程:https://www.bilibili.com/video/av35595465 課程原始碼:https://github.com/ibywind/s

springboot 2.0 教程-07-整合redis快取框架

閱讀原文:https://blog.bywind.cn/articles/2018/11/28/1543373589258.html 視訊教程:https://www.bilibili.com/video/av35595465 課程原始碼:https://github.com/ibywind/s

springboot 2.0 教程-05-整合mybatis

閱讀原文:https://blog.bywind.cn/articles/2018/11/28/1543373589258.html 視訊教程:https://www.bilibili.com/video/av35595465 課程原始碼:https://github.com/ibywind/s

springboot 2.0 教程-02-整合web訪問

閱讀原文:https://blog.bywind.cn/articles/2018/11/28/1543371843041.html 視訊教程:https://www.bilibili.com/video/av35595465 課程原始碼:https://github.com/ibywind/s

微服務 SpringBoot 2.0(九):整合Mybatis

我是SQL小白,我選Mybatis —— Java面試必修 引言 在第五章我們已經整合了Thymeleaf頁面框架,第七章也整合了JdbcTemplate,那今天我們再結合資料庫整合Mybatis框架 在接下來的文章中,我會用一個開源的部落格原始碼來做講解

SpringBoot 2.0.5簡單整合Spring Security遇到的坑

SpringBoot整合Security的部落格案例網上已經很多了,但個人覺得對於一個初次整合Security的同學來說,一個簡單的案例還是很有必要的。為此,上傳一個本人整合的案例,僅供大家參考,也為自己記錄一下,話不多說,表演開始。 版本介紹:SpringBoot 2.0

Springboot 2.0.x 簡單整合Rabbit MQ 並實現訊息傳送和消費【Windows 環境下】

文章目錄 Springboot 2.0.x 簡單整合Rabbit MQ 並實現訊息傳送和消費【Windows 環境下】 1、rabbit mq 基礎支援,安裝 Erlang 環境 2、安裝 ra

Springboot 2.0.3.RELEASE 與 activiti 5.22.0 整合

activiti Spring boot 整合原始碼 專案採用Springboot 2.0.3.RELEASE版本以及activiti 5.22.0版本 在acitiviti官網下載完整包https://github.com/Activiti/Activiti/