spring?boot集成redisson的最佳實踐示例
前言
本文假使你了解spring boot并實踐過,非spring boot用戶可跳過也可借此研究一下。
redisson是redis的java客戶端程序,國內(nèi)外很多公司都有在用,如下,

和spring的集成中官方給出的實例也是比較多,比較方便。
集成jedis實例,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實例,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配置文件來實例化redissonClient,也可以使用spring的xml來配置,redisson官方給出了諸如<redisson:client>等標(biāo)簽來簡化在xml中的配置,但是如果我們的程序是spring boot,一般都是使用application.properties來配置我們應(yīng)用配置參數(shù),不想提供額外的yaml,json,xml等配置文件,雖然spring boot也支持這么做。所以如何使用application.properties的方式配置redisson呢,請看下文?
提供實例化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ù)(長連接) spring.redisson.connectionMinimumIdleSize=12 #連接空閑超時,單位:毫秒 默認(rèn)10000;當(dāng)前連接池里的連接數(shù)量超過了最小空閑連接數(shù), #而連接空閑時間超過了該數(shù)值,這些連接將會自動被關(guān)閉,并從連接池里去掉 spring.redisson.idleConnectionTimeout=10000 #ping節(jié)點超時,單位:毫秒,默認(rèn)1000 spring.redisson.pingTimeout=1000 #連接等待超時,單位:毫秒,默認(rèn)10000 spring.redisson.connectTimeout=10000 #命令等待超時,單位:毫秒,默認(rèn)3000;等待節(jié)點回復(fù)命令的時間。該時間從命令發(fā)送成功時開始計時 spring.redisson.timeout=3000 #命令失敗重試次數(shù),默認(rèn)值:3 spring.redisson.retryAttempts=2 #命令重試發(fā)送時間間隔,單位:毫秒,默認(rèn)值:1500 spring.redisson.retryInterval=1500 #重新連接時間間隔,單位:毫秒,默認(rèn)值:3000;連接斷開時,等待與其重新建立連接的時間間隔 spring.redisson.reconnectionTimeout=3000 #執(zhí)行失敗最大次數(shù), 默認(rèn)值:3;失敗后直到 reconnectionTimeout超時以后再次嘗試。 spring.redisson.failedAttempts=2 #身份驗證密碼 #spring.redisson.password= #單個連接最大訂閱數(shù)量,默認(rèn)值:5 spring.redisson.subscriptionsPerConnection=5 #客戶端名稱 #spring.redisson.clientName= #發(fā)布和訂閱連接的最小空閑連接數(shù),默認(rèn)值:1;Redisson內(nèi)部經(jīng)常通過發(fā)布和訂閱來實現(xiàn)許多功能。 #長期保持一定數(shù)量的發(fā)布訂閱連接是必須的 spring.redisson.subscriptionConnectionMinimumIdleSize=1 #發(fā)布和訂閱連接池大小,默認(rèn)值:50 spring.redisson.subscriptionConnectionPoolSize=50 #連接池最大容量。默認(rèn)值:64;連接池的連接數(shù)量自動彈性伸縮 spring.redisson.connectionPoolSize=64 #數(shù)據(jù)庫編號,默認(rèn)值:0 spring.redisson.database=0 #是否啟用DNS監(jiān)測,默認(rèn)值:false spring.redisson.dnsMonitoring=false #DNS監(jiān)測時間間隔,單位:毫秒,默認(rèn)值:5000 spring.redisson.dnsMonitoringInterval=5000
java bean中已經(jīng)給所有需要配置的值寫上了官方默認(rèn)的初始值,如果你不考慮更改默認(rèn)值,實際上你只需要在你的application.properties添加如下配置就好
#redis鏈接地址 spring.redisson.address=192.168.1.204:6379
注意:這里配置連接的模式是單機(jī)模式,如果你想通過這種配置方式配置集群模式和哨兵模式,請參考官方wiki,修改下java bean就好
githubwiki:https://github.com/redisson/redisson/wiki/
以上就是spring boot集成redisson的最佳實踐示例的詳細(xì)內(nèi)容,更多關(guān)于spring boot集成redisson實踐的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
SpringBoot優(yōu)化接口響應(yīng)時間的九個技巧
在實際開發(fā)中,提升接口響應(yīng)速度是一件挺重要的事,特別是在面臨大量用戶請求的時候,本文為大家整理了9個SpringBoot優(yōu)化接口響應(yīng)時間的技巧,希望對大家有所幫助2024-01-01
手把手帶你分析SpringBoot自動裝配完成了Ribbon哪些核心操作
這篇文章主要介紹了詳解Spring Boot自動裝配Ribbon哪些核心操作的哪些操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-08-08
Spring中@Autowired注解作用在方法上和屬性上說明
這篇文章主要介紹了Spring中@Autowired注解作用在方法上和屬性上說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11
elasticsearch設(shè)置賬號和密碼的完整代碼示例
這篇文章主要介紹了如何在Docker中安裝和配置Elasticsearch(ES)和Kibana,描述了如何設(shè)置Kibana的用戶和密碼,并解決由于ES默認(rèn)禁止使用超級用戶登錄Kibana的問題,需要的朋友可以參考下2025-01-01

