转载自  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 实战干货相关推荐

  1. Spring Boot 高效入门实战

    凭借开箱即用,远离繁琐的配置等特性,Spring Boot 已经成为 Java 开发者人人必学必会的开源项目.那么开发者该如何快速上手Spring Boot 呢? 进入Spring Boot世界 Ja ...

  2. Java Spring Boot 2.0实战Docker容器与架构原理,视频与课件,基于Linux环境...

    Java Spring Boot 2.0实战Docker容器Linux与架构原理 内容摘要:Docker是最流行的开源容器引擎,Go语言开发,在互联网大规模集群.云计算.微服务等架构中广泛使用.本次课 ...

  3. 【Spring Boot组件集成实战】集成Kaptcha谷歌验证码

    更多精彩内容,请访问 Spring Boot组件集成实战专栏 ! 推荐项目:一套基于Spring Boot+Layui的内容管理系统/快速开发脚手架(含完整的开发文档.演示网址等) 文章目录 1. 验 ...

  4. 热烈庆祝《Spring Boot 2.X 实战教程》上线了!

    视频地址:https://edu.csdn.net/course/detail/25550 l 机构名称:大华软件学院  l 授课讲师:大强老师 l 课程名称:Spring Boot 2.X 实战教程 ...

  5. Spring Boot 揭秘与实战(二) 数据缓存篇 - EhCache

    文章目录 1. EhCache 集成 2. 源代码 本文,讲解 Spring Boot 如何集成 EhCache,实现缓存. 在阅读「Spring Boot 揭秘与实战(二) 数据缓存篇 - 快速入门 ...

  6. Java Spring Boot 2.0 实战之制作Docker镜像并推送到Docker Hub和阿里云仓库

    内容摘要:大规模集群快速部署Java应用,需要制作Docker镜像,本次课程详细介绍如何制作Java程序的Docker镜像文件,深入解析DockerFile核心参数,以及实践演练把我们制作的Docke ...

  7. java+cache使用方法_java相关:Spring boot redis cache的key的使用方法

    java相关:Spring boot redis cache的key的使用方法 发布于 2020-8-16| 复制链接 摘记: 在数据库查询中我们往往会使用增加缓存来提高程序的性能,@Cacheabl ...

  8. 19年8月 字母哥 第三章 spring boot 配置原理实战 用热点公司网不行

    第三章 spring boot 配置原理实战 3.1.结合配置加载讲解bean自动装配原理 3.2.详解YAML语法及占位符语法 3.3.获取自定义配置的两种实现方法 3.4.配置文件注入值数据校验 ...

  9. Spring Boot Redis缓存

    Spring Boot Redis缓存 目录[ 隐藏 ] 1 Spring Boot Redis缓存 1.1 Spring Boot Redis项目设置 1.2 Spring Boot Redis缓存 ...

最新文章

  1. 静态路由和默认路由的配置实例
  2. matlab编写的程序输入参数怎么写,用matlab编写一个用EM算法估计参数的程序
  3. qt布局中listwidget 保持固定宽度_UI设计中响应式设计实用技巧
  4. 005_Spring Data JPA条件查询
  5. VC6中用DOM遍历网页中的元素
  6. WinForm中 事件 委托 多线程的应用【以一个下载进度条为例】
  7. 123456789怎样运算等于1?答案可能很多,写个你最简单的方法
  8. Registered Nurse in the US
  9. linux ls 中文乱码_每天一个linux命令:Linux文件类型与扩展名
  10. 如何用python删除异常值_Python机器学习:异常值查找和处理
  11. label里面的文字换行_如何在JLabel中自动换行文本?
  12. matlab安装及破解
  13. 人工智能导论(专家系统)
  14. 闲鱼最新选品技巧,快速帮你找到爆款!
  15. jquery对cookie进行读取、写入和删除
  16. mysql登录其他电脑_如何连接另一台电脑的mysql数据库
  17. 计算机网络 :P2P文件分发
  18. 经验谈|如何处理好产品与开发的关系
  19. dede 获取当前栏目的上一级栏目名称,和链接
  20. 手把手教你搭建OA服务器

热门文章

  1. map容器中删除一个元素(value)
  2. [RabbitMQ]MQ 的选择
  3. 数据结构---顺序查找和二分查找
  4. ubuntu 文件管理器死机
  5. 运行Deeplab遇到‘Unexpected label’
  6. P3435 [POI2006]OKR-Periods of Words kmp + fail指针
  7. Codeforces Round #630 (Div. 2) E. Height All the Same 排列组合
  8. NOIP2020 赛前总结
  9. CF1146F - Leaf Partition(树形dp)
  10. Educational Codeforces Round 112 (Rated for Div. 2)