欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring?boot集成redisson的最佳實(shí)踐示例

 更新時(shí)間:2022年03月05日 15:18:00   作者:kl  
這篇文章主要為大家介紹了spring?boot集成redisson的最佳實(shí)踐示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

本文假使你了解spring boot并實(shí)踐過(guò),非spring boot用戶可跳過(guò)也可借此研究一下。

redisson是redis的java客戶端程序,國(guó)內(nèi)外很多公司都有在用,如下,

和spring的集成中官方給出的實(shí)例也是比較多,比較方便。

集成jedis實(shí)例,xml方式

集成前引用的jar

<!--kl add redis client-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-pool/commons-pool -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.2</version>
</dependency>

 spring bean配置xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!-- POOL配置 -->
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxTotal" value="300"/>
        <property name="maxIdle" value="10"/>
        <property name="maxWaitMillis" value="1000"/>
        <property name="testOnBorrow" value="true"/>
    </bean>
    <!-- jedis shard信息配置 -->
    <bean id="jedisShardInfo" class="redis.clients.jedis.JedisShardInfo">
        <constructor-arg index="0" value="${redis.host}"/>
        <constructor-arg index="1" value="${redis.port}" type="int"/>
    </bean>

    <!-- jedis shard pool配置 -->
    <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool">
        <constructor-arg index="0" ref="jedisPoolConfig"/>
        <constructor-arg index="1">
            <list>
                <ref bean="jedisShardInfo"/>
            </list>
        </constructor-arg>
    </bean>
    <bean id="shardedJedis" factory-bean="shardedJedisPool" factory-method="getResource" />
</beans>

集成redisson實(shí)例,java bean的方式

集成前引入的jar

<!--kl add redis client-->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>2.5.0</version>
</dependency>

javabean配置如下

/**
 * Created by kl on 2016/10/21.
 */
@Configuration
@ComponentScan
public class RedsissonConfig {
    @Bean(destroyMethod="shutdown")
    RedissonClient redisson(@Value("classpath:/conf/redisson.yaml") Resource configFile) throws IOException {
        Config config = Config.fromYAML(configFile.getInputStream());
        return Redisson.create(config);
    }
}

spring集成redis客戶端jedis以及redisson,可以提供yaml,json配置文件來(lái)實(shí)例化redissonClient,也可以使用spring的xml來(lái)配置,redisson官方給出了諸如<redisson:client>等標(biāo)簽來(lái)簡(jiǎn)化在xml中的配置,但是如果我們的程序是spring boot,一般都是使用application.properties來(lái)配置我們應(yīng)用配置參數(shù),不想提供額外的yaml,json,xml等配置文件,雖然spring boot也支持這么做。所以如何使用application.properties的方式配置redisson呢,請(qǐng)看下文?

提供實(shí)例化javabean

/**
 * Created by kl on 2017/09/26.
 * redisson 客戶端配置
 */
@ConfigurationProperties(prefix = "spring.redisson")
@Configuration
public class RedissonConfig{
    private String address;
    private int connectionMinimumIdleSize = 10;
    private int idleConnectionTimeout=10000;
    private int pingTimeout=1000;
    private int connectTimeout=10000;
    private int timeout=3000;
    private int retryAttempts=3;
    private int retryInterval=1500;
    private int reconnectionTimeout=3000;
    private int failedAttempts=3;
    private String password = null;
    private int subscriptionsPerConnection=5;
    private String clientName=null;
    private int subscriptionConnectionMinimumIdleSize = 1;
    private int subscriptionConnectionPoolSize = 50;
    private int connectionPoolSize = 64;
    private int database = 0;
    private boolean dnsMonitoring = false;
    private int dnsMonitoringInterval = 5000;
    private int thread; //當(dāng)前處理核數(shù)量 * 2
    private String codec="org.redisson.codec.JsonJacksonCodec";
    @Bean(destroyMethod = "shutdown")
    RedissonClient redisson() throws Exception {
        Config config = new Config();
        config.useSingleServer().setAddress(address)
                .setConnectionMinimumIdleSize(connectionMinimumIdleSize)
                .setConnectionPoolSize(connectionPoolSize)
                .setDatabase(database)
                .setDnsMonitoring(dnsMonitoring)
                .setDnsMonitoringInterval(dnsMonitoringInterval)
                .setSubscriptionConnectionMinimumIdleSize(subscriptionConnectionMinimumIdleSize)
                .setSubscriptionConnectionPoolSize(subscriptionConnectionPoolSize)
                .setSubscriptionsPerConnection(subscriptionsPerConnection)
                .setClientName(clientName)
                .setFailedAttempts(failedAttempts)
                .setRetryAttempts(retryAttempts)
                .setRetryInterval(retryInterval)
                .setReconnectionTimeout(reconnectionTimeout)
                .setTimeout(timeout)
                .setConnectTimeout(connectTimeout)
                .setIdleConnectionTimeout(idleConnectionTimeout)
                .setPingTimeout(pingTimeout)
                .setPassword(password);
        Codec codec=(Codec)ClassUtils.forName(getCodec(),ClassUtils.getDefaultClassLoader()).newInstance();
        config.setCodec(codec);
        config.setThreads(thread);
        config.setEventLoopGroup(new NioEventLoopGroup());
        config.setUseLinuxNativeEpoll(false);
        return Redisson.create(config);
    }

注意:以上代碼不是完整的,省略了get set代碼

application.properties添加如下配置

#redis鏈接地址
spring.redisson.address=192.168.1.204:6379
#當(dāng)前處理核數(shù)量 * 2
spring.redisson.thread=4
#指定編解碼
spring.redisson.codec=org.redisson.codec.JsonJacksonCodec;
#最小空閑連接數(shù),默認(rèn)值:10,最小保持連接數(shù)(長(zhǎng)連接)
spring.redisson.connectionMinimumIdleSize=12
#連接空閑超時(shí),單位:毫秒 默認(rèn)10000;當(dāng)前連接池里的連接數(shù)量超過(guò)了最小空閑連接數(shù),
#而連接空閑時(shí)間超過(guò)了該數(shù)值,這些連接將會(huì)自動(dòng)被關(guān)閉,并從連接池里去掉
spring.redisson.idleConnectionTimeout=10000
#ping節(jié)點(diǎn)超時(shí),單位:毫秒,默認(rèn)1000
spring.redisson.pingTimeout=1000
#連接等待超時(shí),單位:毫秒,默認(rèn)10000
spring.redisson.connectTimeout=10000
#命令等待超時(shí),單位:毫秒,默認(rèn)3000;等待節(jié)點(diǎn)回復(fù)命令的時(shí)間。該時(shí)間從命令發(fā)送成功時(shí)開始計(jì)時(shí)
spring.redisson.timeout=3000
#命令失敗重試次數(shù),默認(rèn)值:3
spring.redisson.retryAttempts=2
#命令重試發(fā)送時(shí)間間隔,單位:毫秒,默認(rèn)值:1500
spring.redisson.retryInterval=1500
#重新連接時(shí)間間隔,單位:毫秒,默認(rèn)值:3000;連接斷開時(shí),等待與其重新建立連接的時(shí)間間隔
spring.redisson.reconnectionTimeout=3000
#執(zhí)行失敗最大次數(shù), 默認(rèn)值:3;失敗后直到 reconnectionTimeout超時(shí)以后再次嘗試。
spring.redisson.failedAttempts=2
#身份驗(yàn)證密碼
#spring.redisson.password=
#單個(gè)連接最大訂閱數(shù)量,默認(rèn)值:5
spring.redisson.subscriptionsPerConnection=5
#客戶端名稱
#spring.redisson.clientName=
#發(fā)布和訂閱連接的最小空閑連接數(shù),默認(rèn)值:1;Redisson內(nèi)部經(jīng)常通過(guò)發(fā)布和訂閱來(lái)實(shí)現(xiàn)許多功能。
#長(zhǎng)期保持一定數(shù)量的發(fā)布訂閱連接是必須的
spring.redisson.subscriptionConnectionMinimumIdleSize=1
#發(fā)布和訂閱連接池大小,默認(rèn)值:50
spring.redisson.subscriptionConnectionPoolSize=50
#連接池最大容量。默認(rèn)值:64;連接池的連接數(shù)量自動(dòng)彈性伸縮
spring.redisson.connectionPoolSize=64
#數(shù)據(jù)庫(kù)編號(hào),默認(rèn)值:0
spring.redisson.database=0
#是否啟用DNS監(jiān)測(cè),默認(rèn)值:false
spring.redisson.dnsMonitoring=false
#DNS監(jiān)測(cè)時(shí)間間隔,單位:毫秒,默認(rèn)值:5000
spring.redisson.dnsMonitoringInterval=5000

java bean中已經(jīng)給所有需要配置的值寫上了官方默認(rèn)的初始值,如果你不考慮更改默認(rèn)值,實(shí)際上你只需要在你的application.properties添加如下配置就好

#redis鏈接地址
spring.redisson.address=192.168.1.204:6379

注意:這里配置連接的模式是單機(jī)模式,如果你想通過(guò)這種配置方式配置集群模式和哨兵模式,請(qǐng)參考官方wiki,修改下java bean就好

githubwiki:https://github.com/redisson/redisson/wiki/

以上就是spring boot集成redisson的最佳實(shí)踐示例的詳細(xì)內(nèi)容,更多關(guān)于spring boot集成redisson實(shí)踐的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • SpringCloud服務(wù)網(wǎng)關(guān)Gateway的使用教程詳解

    SpringCloud服務(wù)網(wǎng)關(guān)Gateway的使用教程詳解

    SpringCloud Gateway是Spring體系內(nèi)的一個(gè)全新項(xiàng)目,它旨在為微服務(wù)架構(gòu)提供一種簡(jiǎn)單有效的統(tǒng)一的API路由管理方式。本文就來(lái)為大家詳細(xì)講講Gateway的使用教程,需要的可以參考一下
    2022-09-09
  • java實(shí)現(xiàn)日歷(某年的日歷,某月的日歷)用戶完全自定義

    java實(shí)現(xiàn)日歷(某年的日歷,某月的日歷)用戶完全自定義

    本篇文章介紹了,java實(shí)現(xiàn)日歷(某年的日歷,某月的日歷)用戶完全自定義。需要的朋友參考下
    2013-05-05
  • Java-Io-RandomAccessFile任意位置讀寫數(shù)據(jù)的操作小結(jié)

    Java-Io-RandomAccessFile任意位置讀寫數(shù)據(jù)的操作小結(jié)

    RandomAccessFile類支持隨機(jī)訪問(wèn)方式,可以跳轉(zhuǎn)到文件的任意位置讀寫數(shù)據(jù),這個(gè)類在文件隨機(jī)讀取時(shí)有很大的優(yōu)勢(shì),可利用多線程完成對(duì)一個(gè)大文件的讀寫,本文給大家介紹Java-Io-RandomAccessFile(任意位置讀寫數(shù)據(jù))的相關(guān)知識(shí),需要的朋友可以參考下
    2022-05-05
  • jstl標(biāo)簽基礎(chǔ)開發(fā)步驟(詳解)

    jstl標(biāo)簽基礎(chǔ)開發(fā)步驟(詳解)

    下面小編就為大家?guī)?lái)一篇jstl標(biāo)簽基礎(chǔ)開發(fā)步驟(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Java?18?新特性之Web服務(wù)器?jwebserver功能

    Java?18?新特性之Web服務(wù)器?jwebserver功能

    JEP?408:?Simple?Web?Server,是這次Java?18推出的一個(gè)比較獨(dú)立的全新功能點(diǎn)。我們可以通過(guò)命令行工具來(lái)啟動(dòng)一個(gè)提供靜態(tài)資源訪問(wèn)的迷你Web服務(wù)器,本文通過(guò)一個(gè)構(gòu)建HTML頁(yè)面的例子,來(lái)嘗試一下jwebserver的功能
    2022-04-04
  • Spring Boot中使用 Spring Security 構(gòu)建權(quán)限系統(tǒng)的示例代碼

    Spring Boot中使用 Spring Security 構(gòu)建權(quán)限系統(tǒng)的示例代碼

    本篇文章主要介紹了Spring Boot中使用 Spring Security 構(gòu)建權(quán)限系統(tǒng)的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • 一文詳解Java線程中的安全策略

    一文詳解Java線程中的安全策略

    Java中的線程到底有哪些安全策略呢?這篇文章將詳細(xì)為大家分析一下。文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下
    2022-05-05
  • SpringMVC如何獲取多種類型數(shù)據(jù)響應(yīng)

    SpringMVC如何獲取多種類型數(shù)據(jù)響應(yīng)

    這篇文章主要介紹了SpringMVC如何獲取多種類型數(shù)據(jù)響應(yīng),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • Java 中ThreadLocal類詳解

    Java 中ThreadLocal類詳解

    什么是ThreadLocal?顧名思義它是local variable(線程局部變量)。它的功用非常簡(jiǎn)單,就是為每一個(gè)使用該變量的線程都提供一個(gè)變量值的副本,是每一個(gè)線程都可以獨(dú)立地改變自己的副本,而不會(huì)和其它線程的副本沖突。從線程的角度看,就好像每一個(gè)線程都完全擁有該變量。
    2016-03-03
  • 新手初學(xué)Java數(shù)組

    新手初學(xué)Java數(shù)組

    數(shù)組是相同類型數(shù)據(jù)的有序集合數(shù)組描述的是相同類型的若干個(gè)數(shù)據(jù),按照一定的先后次序排列組合而成。其中,每一個(gè)數(shù)據(jù)稱作一個(gè)數(shù)組元素,每個(gè)數(shù)組元素可以通過(guò)一個(gè)下標(biāo)來(lái)訪問(wèn)它們數(shù)組的聲明創(chuàng)建
    2021-07-07

最新評(píng)論