redis_cluster客户端集成排错经历
好久没弄,忘得差不多了,记一下,前提不表!
1.单台redis客户端引用
从别的项目中扣过来一配置文件,发现只有spring-data-redis 的应用实例,没有jedis,果断加入,很简单网上很多列子。
附xml配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cache="http://www.springframework.org/schema/cache" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd"> <!-- JedisConnectionFactory --> <bean id="stringJedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy" p:host-name="${qrpay.redis.host}" p:port="${qrpay.redis.port}" p:timeout="${qrpay.redis.timeout}" p:usePool="${qrpay.redis.usePool}" p:password="${qrpay.redis.password}"> <constructor-arg index="0" ref="stringJedisPoolConfig" /> </bean> <!-- JedisPoolConfig --> <bean id="stringJedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="${qrpay.redis.maxTotal}" /> <property name="maxIdle" value="${qrpay.redis.maxIdle}" /> <property name="minIdle" value="${qrpay.redis.minIdle}" /> <property name="maxWaitMillis" value="${qrpay.redis.maxWaitMillis}" /> <property name="testOnBorrow" value="${qrpay.redis.testOnBorrow}" /> <property name="softMinEvictableIdleTimeMillis" value="500" /> <property name="timeBetweenEvictionRunsMillis" value="1000" /> </bean> <!-- StringRedisTemplate 实例 --> <bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate" p:connection-factory-ref="stringJedisConnectionFactory" p:enableTransactionSupport="false" /> <!-- jedisPool 实例 --> <bean id="jedisPool" class="redis.clients.jedis.JedisPool"> <constructor-arg name="poolConfig" ref="stringJedisPoolConfig" /> <constructor-arg name="host" value="${qrpay.redis.host}" /> <constructor-arg name="port" value="${qrpay.redis.port}" type="int" /> <constructor-arg name="timeout" value="${qrpay.redis.timeout}" type="int" /> <constructor-arg name="password" value="${qrpay.redis.password}" /> </bean> </beans>
2.redis_cluster客户端引用
A: spring-data-redis 实例引用
坑1:
项目中用的版本是 1.6.0.RELEASE
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.6.0.RELEASE</version> </dependency>
报错如下:
原因 spring-data-redis 1.7以上的版本才支持 RedisCluster
坑2:
换版本 换成1.7.0.RELEASE
原因 报错很明显了 不支持设了密码的RedisCluster
最终解决 版本换成 1.8.0.RELEASE
B: jedisCluster 实例引用
坑1:
由于是扣过来的配置文件,里面本身只有 spring-data-redis 的集成,自己加的jedisCluster配置,直接把 配置cluster机器的6个节点的ip、port拿过来了其实是不一样的
报错如下:
原因 就是说配置不对 参数不正确
jedisCluster 节点配置
原因
spring-data-redis 是 org.springframework.data.redis.connection.RedisClusterNode
jedisCluster 是 redis.clients.jedis.HostAndPort
对应配置改回来就对了
坑 2:
在配置的密码的集群没有设置密码会报
redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.
解决办法
1.jedis2.9版本之前的 需要手工重写jedis源码,把认证加进去
详见 大神帖子 https://www.cnblogs.com/snowstar123/p/5696052.html
2.更新jedis的版本 到2.9 支持密码配置
点到JedisCluster中看 有构造函数 支持
xml中对应配置即可
附cluster 下xml配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> <!-- 1.配置ConnectionFactory --> <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy" p:password="${qrpay.redis.cluster.password}"> <constructor-arg name="clusterConfig" ref="redisClusterConfiguration" /> <constructor-arg name="poolConfig" ref="jedisPoolConfig" /> </bean> <!-- 2.配置JedisPoolConfig --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="minIdle" value="${qrpay.redis.cluster.minIdle}" /> <property name="maxIdle" value="${qrpay.redis.cluster.maxIdle}" /> <property name="maxTotal" value="${qrpay.redis.cluster.maxActive}" /> <property name="maxWaitMillis" value="${qrpay.redis.cluster.maxWait}" /> <property name="testOnBorrow" value="${qrpay.redis.cluster.testOnBorrow}" /> <property name="testOnReturn" value="true" /> <property name="testWhileIdle" value="true" /> </bean> <!-- 3.配置RedisClusterConfiguration --> <bean id="redisClusterConfiguration" class="org.springframework.data.redis.connection.RedisClusterConfiguration"> <property name="clusterNodes"> <set> <bean name="node1" class="org.springframework.data.redis.connection.RedisClusterNode"> <constructor-arg name="host" value="${qrpay.redis.cluster.host1}" /> <constructor-arg name="port" value="${qrpay.redis.cluster.port1}" /> </bean> <bean name="node2" class="org.springframework.data.redis.connection.RedisClusterNode"> <constructor-arg name="host" value="${qrpay.redis.cluster.host2}" /> <constructor-arg name="port" value="${qrpay.redis.cluster.port2}" /> </bean> <bean name="node3" class="org.springframework.data.redis.connection.RedisClusterNode"> <constructor-arg name="host" value="${qrpay.redis.cluster.host3}" /> <constructor-arg name="port" value="${qrpay.redis.cluster.port3}" /> </bean> <bean name="node4" class="org.springframework.data.redis.connection.RedisClusterNode"> <constructor-arg name="host" value="${qrpay.redis.cluster.host4}" /> <constructor-arg name="port" value="${qrpay.redis.cluster.port4}" /> </bean> <bean name="node5" class="org.springframework.data.redis.connection.RedisClusterNode"> <constructor-arg name="host" value="${qrpay.redis.cluster.host5}" /> <constructor-arg name="port" value="${qrpay.redis.cluster.port5}" /> </bean> <bean name="node6" class="org.springframework.data.redis.connection.RedisClusterNode"> <constructor-arg name="host" value="${qrpay.redis.cluster.host6}" /> <constructor-arg name="port" value="${qrpay.redis.cluster.port6}" /> </bean> </set> </property> </bean> <!-- 4.配置stringRedisTemplate --> <bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"> <property name="defaultSerializer" ref="jdkSerializationRedisSerializer" /> <property name="connectionFactory" ref="jedisConnectionFactory" /> </bean> <!-- 5.配置jdkSerializationRedisSerializer --> <bean id="jdkSerializationRedisSerializer" class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"> </bean> <!-- jedisCluster --> <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"> <constructor-arg name="nodes"> <set> <bean name="node1" class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="${qrpay.redis.cluster.host1}" /> <constructor-arg name="port" value="${qrpay.redis.cluster.port1}" /> </bean> <bean name="node2" class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="${qrpay.redis.cluster.host2}" /> <constructor-arg name="port" value="${qrpay.redis.cluster.port2}" /> </bean> <bean name="node3" class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="${qrpay.redis.cluster.host3}" /> <constructor-arg name="port" value="${qrpay.redis.cluster.port3}" /> </bean> <bean name="node4" class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="${qrpay.redis.cluster.host4}" /> <constructor-arg name="port" value="${qrpay.redis.cluster.port4}" /> </bean> <bean name="node5" class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="${qrpay.redis.cluster.host5}" /> <constructor-arg name="port" value="${qrpay.redis.cluster.port5}" /> </bean> <bean name="node6" class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="${qrpay.redis.cluster.host6}" /> <constructor-arg name="port" value="${qrpay.redis.cluster.port6}" /> </bean> </set> </constructor-arg> <constructor-arg index="1" value="${qrpay.redis.cluster.timeout}"></constructor-arg> <constructor-arg index="2" value="2000"></constructor-arg> <constructor-arg index="3" value="50"></constructor-arg> <constructor-arg index="4" value="${qrpay.redis.cluster.password}"></constructor-arg> <constructor-arg index="5" ref="jedisPoolConfig"></constructor-arg> </bean> </beans>
相关推荐
开发工具_redis_mac版_2018最新版本_安装客户端,开发工具_redis_mac版_2018最新版本_安装客户端
基于acl库封装的redis client vs2010工程; 运行时解压到: redis-acl\lib_acl_cpp\samples\redis路径下,把lib_acl_vc2010d.lib、lib_acl_cpp_vc2010d.lib放到 \redis-acl\lib_acl_cpp\samples\redis\redisclient...
Linux环境中,redis_cluster离线安装包及其安装手册,内含redis集群所有依赖包及软件包,附有一份Linux环境下redis集群离线版安装手册,实测无误!
大数据与云计算培训学习资料 Redis_Cluster 共17页.pptx
Redis集群搭建实战,包括html版和PDF版本的教程及可直接启动的例子,从搭建到常见指令的应用以及一些常见文件的解决和处理,结论小结等.
redis_py_cluster-1.3.4-py2.py3-none-any, redis python 安装whl
openstack创建一个Redis 集群,查看redis运行情况并进行写验证、读验证
1、redis_4.0.10-1_arm64.deb 银河麒麟v4+飞腾 安装包 2、自带服务启动 3、目录树 /opt/redis-4.0.10/ ├── bin │ ├── redis-benchmark │ ├── redis-check-aof │ ├── redis-check-rdb │ ├── ...
Docker-compose: docker官方编排项目之一,负责快速部署分布式应用 Docker-compose.yml:redis-cluster集群redis节点初始化文件 ...Redis.conf:redis客户端 Redis-trib-latest.tar.gz:redis-cluster管理工具
redis主从配置文件
Docker redis集群自动化部署脚本 Docker redis集群自动化部署脚本
shiro-redis-cluster spring mvc shiro redis
spring boot实现redis集群
技术文档分享。
Redis集群搭建实战,包括html版和PDF版本的教程,从搭建到常见指令的应用以及一些常见文件的解决和处理,结论小结等.
redis_Linux+Win_可视化客户端,很容易使用,有两个版本和可视化客户端
安装redis_rate支持2个最新的Go版本,并且需要具有支持的Go版本。 因此,请确保初始化Go模块:go mod init github.com/my/repo 然后安装redis_rate / v9(在导入中注意v9 ;忽略它是一个普遍的错误):go get github...
Tomcat_redis_Session共享
redis-trib.rb是官方提供的Redis Cluster的管理工具,无需额外下载,默认位于源码包的src目录下,但因该工具是用ruby开发的,所以需要准备相关的依赖环境。