<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文假使你瞭解spring boot並實踐過,非spring boot使用者可跳過也可藉此研究一下。
redisson是redis的java使用者端程式,國內外很多公司都有在用,如下,
和spring的整合中官方給出的範例也是比較多,比較方便。
<!--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>
<?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>
<!--kl add redis client--> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>2.5.0</version> </dependency>
/** * 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>等標籤來簡化在xml中的設定,但是如果我們的程式是spring boot,一般都是使用application.properties來設定我們應用設定引數,不想提供額外的yaml,json,xml等組態檔,雖然spring boot也支援這麼做。所以如何使用application.properties的方式設定redisson呢,請看下文?
/** * 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; //當前處理核數量 * 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程式碼
#redis連結地址 spring.redisson.address=192.168.1.204:6379 #當前處理核數量 * 2 spring.redisson.thread=4 #指定編解碼 spring.redisson.codec=org.redisson.codec.JsonJacksonCodec; #最小空閒連線數,預設值:10,最小保持連線數(長連線) spring.redisson.connectionMinimumIdleSize=12 #連線空閒超時,單位:毫秒 預設10000;當前連線池裡的連線數量超過了最小空閒連線數, #而連線空閒時間超過了該數值,這些連線將會自動被關閉,並從連線池裡去掉 spring.redisson.idleConnectionTimeout=10000 #ping節點超時,單位:毫秒,預設1000 spring.redisson.pingTimeout=1000 #連線等待超時,單位:毫秒,預設10000 spring.redisson.connectTimeout=10000 #命令等待超時,單位:毫秒,預設3000;等待節點回覆命令的時間。該時間從命令傳送成功時開始計時 spring.redisson.timeout=3000 #命令失敗重試次數,預設值:3 spring.redisson.retryAttempts=2 #命令重試傳送時間間隔,單位:毫秒,預設值:1500 spring.redisson.retryInterval=1500 #重新連線時間間隔,單位:毫秒,預設值:3000;連線斷開時,等待與其重新建立連線的時間間隔 spring.redisson.reconnectionTimeout=3000 #執行失敗最大次數, 預設值:3;失敗後直到 reconnectionTimeout超時以後再次嘗試。 spring.redisson.failedAttempts=2 #身份驗證密碼 #spring.redisson.password= #單個連線最大訂閱數量,預設值:5 spring.redisson.subscriptionsPerConnection=5 #使用者端名稱 #spring.redisson.clientName= #釋出和訂閱連線的最小空閒連線數,預設值:1;Redisson內部經常通過釋出和訂閱來實現許多功能。 #長期保持一定數量的釋出訂閱連線是必須的 spring.redisson.subscriptionConnectionMinimumIdleSize=1 #釋出和訂閱連線池大小,預設值:50 spring.redisson.subscriptionConnectionPoolSize=50 #連線池最大容量。預設值:64;連線池的連線數量自動彈性伸縮 spring.redisson.connectionPoolSize=64 #資料庫編號,預設值:0 spring.redisson.database=0 #是否啟用DNS監測,預設值:false spring.redisson.dnsMonitoring=false #DNS監測時間間隔,單位:毫秒,預設值:5000 spring.redisson.dnsMonitoringInterval=5000
java bean中已經給所有需要設定的值寫上了官方預設的初始值,如果你不考慮更改預設值,實際上你只需要在你的application.properties新增如下設定就好
#redis連結地址 spring.redisson.address=192.168.1.204:6379
注意:這裡設定連線的模式是單機模式,如果你想通過這種設定方式設定叢集模式和哨兵模式,請參考官方wiki,修改下java bean就好
githubwiki:https://github.com/redisson/redisson/wiki/
以上就是spring boot整合redisson的最佳實踐範例的詳細內容,更多關於spring boot整合redisson實踐的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45