日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Boot Redis Cluster 实战干货

發布時間:2023/12/3 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Boot Redis Cluster 实战干货 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自??Spring Boot Redis Cluster 實戰干貨

添加配置信息

spring.redis:database:?0?#?Redis數據庫索引(默認為0)#host:?192.168.1.8#port:?6379password:?123456timeout:?10000?#?連接超時時間(毫秒)??pool:?max-active:?8?#?連接池最大連接數(使用負值表示沒有限制)max-idle:?8?#?連接池中的最大空閑連接max-wait:?-1?#?連接池最大阻塞等待時間(使用負值表示沒有限制)min-idle:?0?#?連接池中的最小空閑連接cluster:nodes:-?192.168.1.8:9001-?192.168.1.8:9002-?192.168.1.8:9003

只需要添加3個master節點,3個slave節點不需要添加。

你要做的也只有這些配置了,其他的spring boot都自動配置好了。

現在就可以像使用單機一樣使用集群,redis會自動按key分片到不同的集群實例。

遇到的問題

Caused?by:?redis.clients.jedis.exceptions.JedisConnectionException:?Could?not?get?a?resource?from?the?poolat?redis.clients.util.Pool.getResource(Pool.java:53)at?redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)at?redis.clients.jedis.JedisSlotBasedConnectionHandler.getConnectionFromSlot(JedisSlotBasedConnectionHandler.java:66)at?redis.clients.jedis.JedisClusterCommand.runWithRetries(JedisClusterCommand.java:116)at?redis.clients.jedis.JedisClusterCommand.runWithRetries(JedisClusterCommand.java:141)at?redis.clients.jedis.JedisClusterCommand.runWithRetries(JedisClusterCommand.java:141)at?redis.clients.jedis.JedisClusterCommand.runWithRetries(JedisClusterCommand.java:141)at?redis.clients.jedis.JedisClusterCommand.runWithRetries(JedisClusterCommand.java:141)at?redis.clients.jedis.JedisClusterCommand.runBinary(JedisClusterCommand.java:60)at?redis.clients.jedis.BinaryJedisCluster.set(BinaryJedisCluster.java:77)at?org.springframework.data.redis.connection.jedis.JedisClusterConnection.set(JedisClusterConnection.java:618)...?36?more Caused?by:?redis.clients.jedis.exceptions.JedisConnectionException:?java.net.ConnectException:?Connection?refused:?connectat?redis.clients.jedis.Connection.connect(Connection.java:207)at?redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93)at?redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1767)at?redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:106)at?org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:868)at?org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:435)at?org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)at?redis.clients.util.Pool.getResource(Pool.java:49)...?46?more Caused?by:?java.net.ConnectException:?Connection?refused:?connectat?java.net.DualStackPlainSocketImpl.waitForConnect(Native?Method)at?java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)at?java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)at?java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)at?java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)at?java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)at?java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)at?java.net.Socket.connect(Socket.java:589)at?redis.clients.jedis.Connection.connect(Connection.java:184)...?53?more

嘗試往redis寫數據的時候,報不能獲取連接異常,跟蹤了半天代碼,發現連接的是127.0.0.1,而不是配置的192.168.1.8,這就奇怪了,繼續跟蹤代碼發現是往redis服務器獲取的返回的集群實例列表,真是坑!

源碼:

redis.clients.jedis.Jedis#clusterSlots

@Override public?List<Object>?clusterSlots()?{checkIsInMultiOrPipeline();client.clusterSlots();return?client.getObjectMultiBulkReply(); }

就是這里獲取返回的集群列表,返回的就是127.0.0.1,而不是配置的192.168.1.8。

最后修改各個集群節點的配置文件redis.conf,添加:

bind?192.168.1.8

重啟集群節點之后,讀寫正常。

總結

以上是生活随笔為你收集整理的Spring Boot Redis Cluster 实战干货的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。