springboot1.5.2整合JedisCluster集群(Redis4.0.10)

Redis Cluster集群远程访问(SpringBoot 2.0) 1.RedisDesktopManager 不支持集群访问方式 2.FastoRedis支持集群访问方式 3.spirngboot2.0 连接redis集群 <dependency> <groupId>org.springframework.boot</group 阅读详情

一、版本

springboot1.5.2

Redis4.0.10

 

二、集群状况

模式:Cluster 集群

密码:有

 

三、依赖包

 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
        <!--redis依赖-->
        <!--默认继承lettuce,切换成jedis需要排除依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!--redis 客户端-->
        <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency>
spring-boot-starter-data-redis版本是1.5.2

spring-data-redis版本是1.8.1(由spring-boot-starter-data-redis引入)

jedis版本是2.9.0

 

四、配置

#redis cluster
spring.redis.cluster.nodes=10.10.2.89:6379,10.10.2.89:6380,10.10.2.90:6379,10.10.2.90:6380,10.10.2.91:6379,10.10.2.91:6380
spring.redis.cluster.password =testpwd
spring.redis.cluster.timeout=2000
spring.redis.cluster.max-redirects=8

五、定义JedisCluster

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;

import java.util.HashSet;
import java.util.Set;

@Configuration
public class JedisClusterConfig {

    //redis集群节点列表
    @Value("${spring.redis.cluster.nodes}")
    private String clusterNodes;

    //redis集群连接超时时间
    @Value("${spring.redis.cluster.timeout}")
    private Long timeout;

    //redis集群最大连接次数
    @Value("${spring.redis.cluster.max-redirects}")
    private int redirects;

    //redis集群连接密码
    @Value("${spring.redis.cluster.password}")
    private String password;


    @Bean
    //重写JedisConnectionFactory方法,注入密码,否则会报认证错误(这个初始化,在getJedisCluster()之前,所以没有读到密码)
    public JedisConnectionFactory connectionFactory(){
        JedisConnectionFactory connectionFactory = new JedisConnectionFactory();
        connectionFactory.setPassword(password);
        return connectionFactory;
    }

   

    @Bean
    //定义JedisCluster对象
    public JedisCluster getJedisCluster(){
        String [] serverArray=clusterNodes.split(",");
        Set<HostAndPort> nodes=new HashSet<>();

        for (String ipPort:serverArray){
            String [] ipPortPair=ipPort.split(":");
            nodes.add(new HostAndPort(ipPortPair[0].trim(),Integer.valueOf(ipPortPair[1].trim())));

        }
        JedisCluster jedisCluster = new JedisCluster(nodes,timeout.intValue(),timeout.intValue(),redirects,password,new GenericObjectPoolConfig());

        return  jedisCluster;
    }



}

 

六、踩坑

如果不重写JedisConnectionFactory,启动会报错

@Bean
    //重写JedisConnectionFactory方法,注入密码,否则会报认证错误(这个初始化,在getJedisCluster()之前,所以没有读到密码)
    public JedisConnectionFactory connectionFactory(){
        JedisConnectionFactory connectionFactory = new JedisConnectionFactory();
        connectionFactory.setPassword(password);
        return connectionFactory;
    }

错误

Caused by: redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.
	at redis.clients.jedis.Protocol.processError(Protocol.java:127)
	at redis.clients.jedis.Protocol.process(Protocol.java:161)
	at redis.clients.jedis.Protocol.read(Protocol.java:215)
	at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340)
	at redis.clients.jedis.Connection.getRawObjectMultiBulkReply(Connection.java:285)
	at redis.clients.jedis.Connection.getObjectMultiBulkReply(Connection.java:291)
	at redis.clients.jedis.Jedis.clusterSlots(Jedis.java:3376)
	at redis.clients.jedis.JedisClusterInfoCache.discoverClusterNodesAndSlots(JedisClusterInfoCache.java:54)
	at redis.clients.jedis.JedisClusterConnectionHandler.initializeSlotsCache(JedisClusterConnectionHandler.java:39)
	at redis.clients.jedis.JedisClusterConnectionHandler.<init>(JedisClusterConnectionHandler.java:17)
	at redis.clients.jedis.JedisSlotBasedConnectionHandler.<init>(JedisSlotBasedConnectionHandler.java:20)
	at redis.clients.jedis.JedisSlotBasedConnectionHandler.<init>(JedisSlotBasedConnectionHandler.java:15)
	at redis.clients.jedis.BinaryJedisCluster.<init>(BinaryJedisCluster.java:41)
	at redis.clients.jedis.JedisCluster.<init>(JedisCluster.java:83)
	at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.createCluster(JedisConnectionFactory.java:306)
	at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.createCluster(JedisConnectionFactory.java:280)
	at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.afterPropertiesSet(JedisConnectionFactory.java:241)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)

定位

在默认初始化JedisConnectionFactory的时候,密码没有传入,那就重写,手动传入。

 

七、redis工具类

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.JedisCluster;

@Service
public class RedisUtil {

    @Autowired
    private JedisCluster cluster;

    /**
     * 对key存储的值做incr计数器
     * @param key
     * @param step
     * @return
     */
    public Long increment(final String key, final Long step) {
        Long value = cluster.incrBy(key,step);
        return value;
    }


}

使用的时候,在业务类中

@Autowired
private RedisUtil redisUtil;

注入使用

 

springboot整合Redis中连接池jedis与lettuce的对比和实现 阅读详情

相关推荐

别再折腾SNAP了!ENVI 5.6.0 直接拖拽打开Sentinel-2 L2A数据的正确姿势

本文详细介绍了ENVI 5.6.0直接处理Sentinel-2 L2A数据的高效方法,无需通过SNAP进行繁琐的重采样预处理。通过直接拖拽XML文件,用户可以快速加载不同分辨率的波段数据,显著提升工作效率。文章还对比了直接打开与SNAP重采样流程的优劣,并提供了常见问题解决方案和高级应用技巧。

weixin_30296405的博客 635

Redis之——Jedis、jedisCluster的使用

1、Jedis客户端 https://redis.io/clients 2、Jedis源码包与使用介绍 https://github.com/xetorthio/jedis 3、项目中使用 通过maven引入Jedis的依赖包 <dependency> <groupId>redis.clients</groupId> <art...

冰河的专栏 9035

ESP-CSI:使用ESP32进行CSI(信道状态信息)采集

使用esp32进行csi(信道状态信息)采集和处理

capsize的博客 8280

redis最佳实践

jedisCluster.incr,key值+1并返回,将 key 中储存的数字值增一,没有的先设为0再+1并返回,如果 key不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作 jedisCluster.expire,设置过期时间 jedisCluster.llen,列表长度 jedisCluster.hincrBy,把对象属性+对应数值 jedisCluster.ttl,当key不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。否则,以秒为单位,返

qq_35572013的博客 3390

CANOCO5.0实现冗余分析(RDA)最详细步骤

在地理及生态领域会常使用RDA分析,RDA的实现路径也有很多,今天介绍一下CANOCO软件的实现方法。1.不同样点和环境因子之间夹角是锐角 是正相关,是钝角是负相关。2.夹角越大 说明相关性较小,夹角越小,相关性越大。得有不同的物种或者样点数值,再加上环境因子数据。3.箭头越长 相关性越大。时间调整到2010年。

Along6的博客 1万+

网站进行企业微信授权登录(附带代码超详细版)

企业微信的扫码登录官方文档 https://work.weixin.qq.com/api/doc/90000/90135/90988 企业微信扫码登录认证流程 上面是官方的图片,看上去比较复杂。因此我用直白简洁的语言梳理下流程。 1、首先在自己的网站上获取到企业微信登录的二维码(二维码怎么获取稍后再说,这里想象下你已经有了一个二维码) 2、你拿着手机扫描二维码,确认登录之后,页面就会自己进行重定向的跳转,跳转的url如何配置下面再讲,但是注意,这个重定向的url可以是内网地址 3、重定向到指

Gzf的博客 1万+

Springboot整合Jedis

我们在用Springboot整合Redis。

heyu996的博客 2897

管理信息系统(MIS)设计

一名读者可以借阅多本图书,而一本图书也可以被不同的读者借阅,所以读者与图书之间存在着多对多的借阅关系,读者与图书之间存在着多对多的联系,即m:n的联系。每一种图书属于一种图书类型,而一种图书类型可以包含很多本图书,因此可以得到图书类型与图书之间也存在着一种一对多的联系,即图书类型与图书是1:n的联系。系统应该实现以下功能:图书管理员可以维护图书信息,包括增加新书、修改图书信息、办理图书借阅登记、图书归还登记、过期图书处理、丢失图书处理及读者借阅证件信息的维护等;

m0_69718745的博客 2477

spring boot下JedisCluster方式连接Redis集群

1.首先是引入配置文件 1 2 gradle方式的配置文件 compile'redis.clients:jedis:2.9.0' 2.application.yml的配置 1 2 3 4 5 6 7 8 9 10 11 12...

cauchy8389的专栏 2435

金融科技风险管理实践之监管评级全解

内部审计是公司治理的四大基石之一。因此,建议银行以问题与结果为导向,推动科技风险分级分类管理,重点防范重大中断、重大事件,并进一步加强科技风险评估与监测,加强对重要管理流程、重要系统、网络等重点管控环节的评估监测,对于评估发现的问题,及时完善管理手段,举一反三解决问题,提高风险管理的有效性。投入更多审计资源,加大对重点机构、薄弱环节、重要领域的审计力度,如:加强对境外机构的审计,加强网络安全、数据安全、业务连续性等高风险领域审计,加强数字化转型过程中的风险审计,以高水平安全,为数字金融高质量发展保驾护航。

银行信息系统应用架构详解 451

【华为OD机试真题】459、小扇和小船的数字游戏、数字游戏 | 机试真题+思路参考+代码解析(CD卷)(C++、Java、Py)

### 🎃题目描述 >小扇和小船今天又玩起来了数字游戏,小船给小扇一个正整数 n(1  现在求 m 的最小值

KJ.JK 1719

springboot 集成redis集群配置JedisCluster,并用redis实现分布式锁

一、redis在工作是一个常见的工具,这里对redis和springboot形成集群做一个简单示例。 (1)引入对应redis集群所需要maven文件 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifac...

fajing_feiyue的博客 5012

MATLAB基础应用精讲-【深度强化学习】SAC(Soft Actor-Critic)算法(附MATLAB和python代码实现)

Actor 网络:用于选择动作。Critic 1 和 Critic 2 网络:用于估计 Q 值。Target Critic 1 和 Target Critic 2:与 Critic 网络架构相同,用于生成更稳定的目标 Q 值。,即在保证探索的情况下选择高价值动作。软更新目标 Q 网络参数,使得目标网络参数缓慢向当前网络靠近,避免振荡。

qq_36130719的博客 454

SpringBoot整合redis集群

       我负责的项目中用到了redis,因为是单人负责整个项目,所以只能去网上找相关的资料和文档,现在项目上线,将相关配置记录下,方便自己以后查阅,也希望能给其他同学带来参考和帮助。        springBoot2.0以后版本做了重大更新,本博客基于的是1.5.10版本,不适用于2.0以上的版本,所以请大家注意下。jdk版本是1.8,redis集群是公司运维的同学搭建的,所以在此不讨...

从零开始的程序员之路 7482

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

springboot整合Redis哨兵

1.1SpringBoot整合Redis哨兵 1.1.1入门案例 /** * 哨兵测试 * 1.配置redis的节点数据集合 * 2.利用哨兵机制连接redis节点. * 3.用户通过哨兵 实现缓存操作. * * 参数1: masterName */ @Test public void testSentinel() { //配置哨兵的信息 Set<String...

weixin_45404244的博客 1615

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

springboot+shiro+redis(集群redis版)整合教程

  相关教程:  1. springboot+shiro整合教程  2. springboot+shiro+redis(单机redis版)整合教程  3. springboot+shiro+redis(单机redis版)整合教程-续(添加动态角色权限控制)    本教程整合环境: java8 maven redis(集群) 开发工具: idea 版本: springboot 1.5.15.RELE...

weixin_33704234的博客 3286

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Redis分片集群模式以及整合SpringBoot

哨兵模式只有一个主节点,如果写操作频率过高,那么就会导致主节点出现宕机问题,就需要使用分片集群模式分片集群结构图:这些主从都会存在哨兵模式使用了分槽技术,默认集群槽的数量为16384个。而每个槽可以存放若干个数据。如果搭建redis集群模式会为主节点平均分配这些槽。

g474928663的博客 2392

redis cluster集群安装 window, SpringBoot通过Jedis整合redis集群

安装地址 版本很多,记得选择正确版本。

IvanWKQ的博客 273

Redis集群redis-cluster的搭建及集成springboot

Redis集群的搭建及集成springboot1、安装wget2、安装redis3、安装gcc依赖4、编译安装5、安装成功,尝试启动6、集群分配6.1克隆虚拟机7、修改配置文件7.1新建目录7.2修改redis.conf的端口 1、安装wget yum install wget 2、安装redis wget http://download.redis.io/releases/redis-4.0....

背着梦的幸存者 1348

springboot搭建redis集群

第一种 springBoot2.0以后版本做了重大更新,本博客基于的是1.5.10版本,不适用于2.0以上的版本, org.springframework.boot spring-boot-starter-data-redis 1.5.10.RELEASE 然后是redis的配置文件: import java.util.HashSet; import java.util.Set; import org.apache.commons.pool2.impl.GenericObjectPoolConfig;

qq_35911118的博客 694

spring boot下JedisCluster方式连接Redis集群的配置

最近在使用springboot做项目,使用redis做缓存。在外网开发的时候redis服务器没有使用集群配置,所有就是用了RedisTemplate的方式进行连接redis服务器。但是项目代码挪到内网开发以后,内网redis服务器使用了集群的配置方式。所以原来的配置文件和帮助类 都完全不能使用了,所以最近对redis集群的配置进行了简单的研究。 1.首先是引入配置文件 gr...

weixin_30603633的博客 519

SpringBoot整合Redis集群

  1.在pom.xml中加入redis的依赖 2.在application.properties加入整合redis的配置。(spring.redis.cluster.nodes=....) 3.新建一个RedisConfig.java文件,在此类的上面加入@Configuration注解,则此类相当于applicationContext.xml配置文件。   4.在RedisConfig类...

shemuel的技术笔记 835

Spring boo项目通过JedisCluster整合redis集群(redis有密码)

SpringBoot + Redis集群的整合: 1、首先要在maven中引入redis的jar包,因为spring boot 对redis的支持非常好,所以只需要引入下面一个jar就可以了: &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;sp...

zgz15515397650的博客 5755

springBoot整合redis集群

一.配置redis依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2.在app...

qq_33562537的博客 276

(七)整合 Redis集群 ,实现消息队列场景

整合 Redis集群 ,实现消息队列场景1、Redis集群简介1.1 RedisCluster概念2、SpringBoot整合Redis集群2.1 核心依赖2.2 核心配置2.3 参数渲染类2.4 集群配置文件2.5 配置Redis模板类3、模拟队列场景案例3.1 加锁解锁工具3.2 消息消费3.3 消息监听器3.4 消息生产者3.5 场景测试接口 1、Redis集群简介 1.1 RedisCluster概念 Redis的分布式解决方案,在3.0版本后推出的方案,有效地解决了Redis分布式的需求,当一个服

爱是与世界平行 1237

spring-data-redis中JedisCluster不支持pipelined问题解决

简介:引言 了解Jedis的童鞋可能清楚,Jedis中JedisCluster是不支持pipeline操作的,如果使用了redis集群,在spring-boot-starter-data-redis中又正好用到的pipeline,那么会接收到Pipeline is currently not supported for JedisClusterConnection.这样的报错。 引言 了解Jedis的童鞋可能清楚,Jedis中JedisCluster是不支持pipeline操作的,如果使用了redis.

3105
上一篇: java模拟调用get请求
下一篇: JedisCluster锁
NullToSay
博客等级 码龄9年 3粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值