當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring Boot Redis Cluster 实战干货
生活随笔
收集整理的這篇文章主要介紹了
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 实战干货的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比亚迪海豚、海豹、ATTO 3 车型登陆
- 下一篇: 一文搞定 Spring Data Red