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 实战干货相关推荐
- Spring Boot 高效入门实战
凭借开箱即用,远离繁琐的配置等特性,Spring Boot 已经成为 Java 开发者人人必学必会的开源项目.那么开发者该如何快速上手Spring Boot 呢? 进入Spring Boot世界 Ja ...
- Java Spring Boot 2.0实战Docker容器与架构原理,视频与课件,基于Linux环境...
Java Spring Boot 2.0实战Docker容器Linux与架构原理 内容摘要:Docker是最流行的开源容器引擎,Go语言开发,在互联网大规模集群.云计算.微服务等架构中广泛使用.本次课 ...
- 【Spring Boot组件集成实战】集成Kaptcha谷歌验证码
更多精彩内容,请访问 Spring Boot组件集成实战专栏 ! 推荐项目:一套基于Spring Boot+Layui的内容管理系统/快速开发脚手架(含完整的开发文档.演示网址等) 文章目录 1. 验 ...
- 热烈庆祝《Spring Boot 2.X 实战教程》上线了!
视频地址:https://edu.csdn.net/course/detail/25550 l 机构名称:大华软件学院 l 授课讲师:大强老师 l 课程名称:Spring Boot 2.X 实战教程 ...
- Spring Boot 揭秘与实战(二) 数据缓存篇 - EhCache
文章目录 1. EhCache 集成 2. 源代码 本文,讲解 Spring Boot 如何集成 EhCache,实现缓存. 在阅读「Spring Boot 揭秘与实战(二) 数据缓存篇 - 快速入门 ...
- Java Spring Boot 2.0 实战之制作Docker镜像并推送到Docker Hub和阿里云仓库
内容摘要:大规模集群快速部署Java应用,需要制作Docker镜像,本次课程详细介绍如何制作Java程序的Docker镜像文件,深入解析DockerFile核心参数,以及实践演练把我们制作的Docke ...
- java+cache使用方法_java相关:Spring boot redis cache的key的使用方法
java相关:Spring boot redis cache的key的使用方法 发布于 2020-8-16| 复制链接 摘记: 在数据库查询中我们往往会使用增加缓存来提高程序的性能,@Cacheabl ...
- 19年8月 字母哥 第三章 spring boot 配置原理实战 用热点公司网不行
第三章 spring boot 配置原理实战 3.1.结合配置加载讲解bean自动装配原理 3.2.详解YAML语法及占位符语法 3.3.获取自定义配置的两种实现方法 3.4.配置文件注入值数据校验 ...
- Spring Boot Redis缓存
Spring Boot Redis缓存 目录[ 隐藏 ] 1 Spring Boot Redis缓存 1.1 Spring Boot Redis项目设置 1.2 Spring Boot Redis缓存 ...
最新文章
- 静态路由和默认路由的配置实例
- matlab编写的程序输入参数怎么写,用matlab编写一个用EM算法估计参数的程序
- qt布局中listwidget 保持固定宽度_UI设计中响应式设计实用技巧
- 005_Spring Data JPA条件查询
- VC6中用DOM遍历网页中的元素
- WinForm中 事件 委托 多线程的应用【以一个下载进度条为例】
- 123456789怎样运算等于1?答案可能很多,写个你最简单的方法
- Registered Nurse in the US
- linux ls 中文乱码_每天一个linux命令:Linux文件类型与扩展名
- 如何用python删除异常值_Python机器学习:异常值查找和处理
- label里面的文字换行_如何在JLabel中自动换行文本?
- matlab安装及破解
- 人工智能导论(专家系统)
- 闲鱼最新选品技巧,快速帮你找到爆款!
- jquery对cookie进行读取、写入和删除
- mysql登录其他电脑_如何连接另一台电脑的mysql数据库
- 计算机网络 :P2P文件分发
- 经验谈|如何处理好产品与开发的关系
- dede 获取当前栏目的上一级栏目名称,和链接
- 手把手教你搭建OA服务器
热门文章
- map容器中删除一个元素(value)
- [RabbitMQ]MQ 的选择
- 数据结构---顺序查找和二分查找
- ubuntu 文件管理器死机
- 运行Deeplab遇到‘Unexpected label’
- P3435 [POI2006]OKR-Periods of Words kmp + fail指针
- Codeforces Round #630 (Div. 2) E. Height All the Same 排列组合
- NOIP2020 赛前总结
- CF1146F - Leaf Partition(树形dp)
- Educational Codeforces Round 112 (Rated for Div. 2)