java操作redis集群配置[可配置密码]和工具类
java操作redis集群配置[可配置密码]和工具类
- <dependency>
 - <groupId>redis.clients</groupId>
 - <artifactId>jedis</artifactId>
 - <version>2.9.0</version>
 - </dependency>
 - <dependency>
 - <groupId>org.apache.commons</groupId>
 - <artifactId>commons-pool2</artifactId>
 - <version>2.4.2</version>
 - </dependency>
 
版本:jedis2.9.0[此版本可以加入密码配置]+commons-pools2.4.2
配置:
  <context:property-placeholder ignore-unresolvable="true" location="classpath*:cache.properties"/>
- <!-- 连接池配置 -->
 - <bean id="jedisConfig" class="redis.clients.jedis.JedisPoolConfig">
 - <!-- 最大连接数 -->
 - <property name="maxTotal" value="150" />
 - <!-- 最大空闲连接数 -->
 - <property name="maxIdle" value="50" />
 - <!-- 最小空闲连接数 -->
 - <property name="minIdle" value="10" />
 - <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->
 - <property name="maxWaitMillis" value="3000" />
 - <!-- 每次释放连接的最大数目 -->
 - <property name="numTestsPerEvictionRun" value="100" />
 - <!-- 释放连接的扫描间隔(毫秒) -->
 - <property name="timeBetweenEvictionRunsMillis" value="3000" />
 - <!-- 连接最小空闲时间 -->
 - <property name="minEvictableIdleTimeMillis" value="1800000" />
 - <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->
 - <property name="softMinEvictableIdleTimeMillis" value="10000" />
 - <!-- 在获取连接的时候检查有效性, 默认false -->
 - <property name="testOnBorrow" value="true" />
 - <!-- 在空闲时检查有效性, 默认false -->
 - <property name="testWhileIdle" value="true" />
 - <!-- 在归还给pool时,是否提前进行validate操作 -->
 - <property name="testOnReturn" value="true" />
 - <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
 - <property name="blockWhenExhausted" value="false" />
 - </bean>
 - <!-- jedis集群版配置 -->
 - <bean id="hostport1" class="redis.clients.jedis.HostAndPort">
 - <constructor-arg name="host" value="${redis.host}"/>
 - <constructor-arg name="port" value="${redis.port1}"/>
 - </bean>
 - <bean id="hostport2" class="redis.clients.jedis.HostAndPort">
 - <constructor-arg name="host" value="${redis.host}"/>
 - <constructor-arg name="port" value="${redis.port2}"/>
 - </bean>
 - <bean id="hostport3" class="redis.clients.jedis.HostAndPort">
 - <constructor-arg name="host" value="${redis.host}"/>
 - <constructor-arg name="port" value="${redis.port3}"/>
 - </bean>
 - <bean id="hostport4" class="redis.clients.jedis.HostAndPort">
 - <constructor-arg name="host" value="${redis.host}"/>
 - <constructor-arg name="port" value="${redis.port4}"/>
 - </bean>
 - <bean id="hostport5" class="redis.clients.jedis.HostAndPort">
 - <constructor-arg name="host" value="${redis.host}"/>
 - <constructor-arg name="port" value="${redis.port5}"/>
 - </bean>
 - <bean id="hostport6" class="redis.clients.jedis.HostAndPort">
 - <constructor-arg name="host" value="${redis.host}"/>
 - <constructor-arg name="port" value="${redis.port6}"/>
 - </bean>
 - <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
 - <constructor-arg name="jedisClusterNode">
 - <set>
 - <ref bean="hostport1"/>
 - <ref bean="hostport2"/>
 - <ref bean="hostport3"/>
 - <ref bean="hostport4"/>
 - <ref bean="hostport5"/>
 - <ref bean="hostport6"/>
 - </set>
 - </constructor-arg>
 - <constructor-arg name="connectionTimeout" value="2000"/>
 - <constructor-arg name="soTimeout" value="2000"/>
 - <constructor-arg name="maxAttempts" value="3"/>
 - <constructor-arg name="password" value="${redis.clusterpassword}"/>
 - <constructor-arg name="poolConfig">
 - <ref bean="jedisConfig"/>
 - </constructor-arg>
 - </bean>
 - <bean id="jedisClientCluster" class="xx.xxx.xxxxx.xxxx.xxxx.JedisClientCluster"></bean>
 
创建cache.properties:
redis.host =192.168.xx.xxx
redis.port1=7001
redis.port2=7002
redis.port3=7003
redis.port4=7004
redis.port5=7005
redis.port6=7006
redis.clusterpassword=xxxxxxx
创建接口JedisClient:
- import org.codehaus.jackson.type.TypeReference;
 - import java.util.List;
 - /**
 - * Created by gzy on 2017/11/17 17:16.
 - */
 - public interface JedisClient {
 - String get(String key);
 - <T> T get(String key, TypeReference<T> clazz);
 - <T> T get(String key, Class<T> clazz);
 - String get(String key, int select);
 - void setAndExpire(String key, Object o, int expire);
 - Long rpush(String key, String string);
 - // Long del(String... keys);
 - Long lpush(String key, String string);
 - void set(String key, Object o);
 - String set(String key, String value);
 - String hget(String hkey, String key);
 - long hset(String hkey, String key, String value);
 - long incr(String key);
 - long expire(String key, int second);
 - long ttl(String key);
 - long del(String key);
 - long hdel(String hkey, String key);
 - Boolean exists(String key);
 - Long decr(String key);
 - List<String> brpop(int timeout, String key);
 - }
 
jedisClient实现类JedisClientCluster:
- /**
 - * Created by gzy on 2017/11/17 17:17.
 - */
 - import org.codehaus.jackson.type.TypeReference;
 - import com.thinkgem.jeesite.common.utils.StringUtils;
 - import org.springframework.beans.factory.annotation.Autowired;
 - import redis.clients.jedis.JedisCluster;
 - import java.util.List;
 - public class JedisClientCluster implements JedisClient {
 - @Autowired
 - private JedisCluster jedisCluster;
 - public <T> T get(String key, TypeReference<T> clazz) {
 - String json = jedisCluster.get(key);
 - if (StringUtils.isNotEmpty(json)) {
 - return JsonUtil.Json2Object(json, clazz);
 - } else {
 - return null;
 - }
 - }
 - public <T> T get(String key, Class<T> clazz) {
 - String json = jedisCluster.get(key);
 - if (StringUtils.isNotEmpty(json)) {
 - return JsonUtil.Json2Object(json, clazz);
 - } else {
 - return null;
 - }
 - }
 - public void set(String key, Object o) {
 - String json = JsonUtil.Object2Json(o);
 - jedisCluster.set(key, json);
 - }
 - public void setAndExpire(String key, Object o, int expire) {
 - String json = JsonUtil.Object2Json(o);
 - jedisCluster.set(key, json);
 - jedisCluster.expire(key, expire);
 - }
 - // public long del(String key) {
 - // return jedisCluster.del(key);
 - // }
 - public String get(String key) {
 - return jedisCluster.get(key);
 - }
 - public String get(String key, int select) {
 - jedisCluster.select(select);
 - return jedisCluster.get(key);
 - }
 - @Override
 - public String set(String key, String value) {
 - return jedisCluster.set(key, value);
 - }
 - @Override
 - public String hget(String hkey, String key) {
 - return jedisCluster.hget(hkey, key);
 - }
 - @Override
 - public long hset(String hkey, String key, String value) {
 - return jedisCluster.hset(hkey, key, value);
 - }
 - @Override
 - public long incr(String key) {
 - return jedisCluster.incr(key);
 - }
 - public Long decr(String key) {
 - return jedisCluster.decr(key);
 - }
 - @Override
 - public long expire(String key, int second) {
 - return jedisCluster.expire(key, second);
 - }
 - @Override
 - public long ttl(String key) {
 - return jedisCluster.ttl(key);
 - }
 - @Override
 - public long del(String key) {
 - return jedisCluster.del(key);
 - }
 - @Override
 - public long hdel(String hkey, String key) {
 - return jedisCluster.hdel(hkey, key);
 - }
 - public Long rpush(String key, String string) {
 - return jedisCluster.rpush(key, string);
 - }
 - public Long lpush(String key, String string) {
 - return jedisCluster.lpush(key, string);
 - }
 - public Boolean exists(String key) {
 - return jedisCluster.exists(key);
 - }
 - public List<String> brpop(int timeout, String key) {
 - return jedisCluster.brpop(timeout, key);
 - }
 - }
 
创建测试类ClusterTest:
- import xx.xx.xxx.xxxx.JedisClient;
 - import org.junit.Test;
 - import org.junit.runner.RunWith;
 - import org.springframework.beans.factory.annotation.Autowired;
 - import org.springframework.test.context.ContextConfiguration;
 - import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 - /**
 - * Created by gzy on 2017/11/20 15:22.
 - */
 - @RunWith(SpringJUnit4ClassRunner.class)
 - @ContextConfiguration("classpath:spring-context-cache.xml")
 - public class ClusterTest {
 - // private static JedisClientCluster redisCluster = SpringContextHolder.getBean("jedisClientCluster");
 - @Autowired
 - private JedisClient jedisClient;
 - @Test
 - public void testJCluster() {
 - jedisClient.set("test:phone:" + "11111111","hhha");
 - String result = jedisClient.get("test:phone:" + "11111111")
 - System.out.println("result==="+result)
 - }}
 
原文地址: https://blog.csdn.net/gzy_0922/article/details/78602716
注意:Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.
java操作redis集群配置[可配置密码]和工具类的更多相关文章
- java操作redis集群配置[可配置密码]和工具类(比较好用)
		
转: java操作redis集群配置[可配置密码]和工具类 java操作redis集群配置[可配置密码]和工具类 <dependency> <groupId>red ...
 - Java操作 Redis 集群
		
// 连接redis集群 @Test public void testJedisCluster() { JedisPoolConfig config = new JedisPoolConfig(); ...
 - Springboot 2.0.x 集成基于Centos7的Redis集群安装及配置
		
Redis简介 Redis是一个基于C语言开发的开源(BSD许可),开源高性能的高级内存数据结构存储,用作数据库.缓存和消息代理.它支持数据结构,如 字符串.散列.列表.集合,带有范围查询的排序集,位 ...
 - python 操作redis集群
		
一.连接redis集群 python的redis库是不支持集群操作的,推荐库:redis-py-cluster,一直在维护.还有一个rediscluster库,看GitHub上已经很久没更新了. 安装 ...
 - Redis设置认证密码 Redis使用认证密码登录 在Redis集群中使用认证密码
		
Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用.这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安 ...
 - 转:Redis设置认证密码 Redis使用认证密码登录 在Redis集群中使用认证密码
		
Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用.这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安 ...
 - redis集群(主从配置)
		
市面上太多kv的缓存,最常用的就属memcache了,但是memcache存在单点问题,不过小日本有复制版本,但是使用的人比较少,redis的出现让kv内存存储的想法成为现实.今天主要内容便是redi ...
 - Java连接redis集群操作存储、删除以及获取值
		
pom文件添加: <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> &l ...
 - Redis集群创建和配置
		
1.检查GCC是否安装,可以看看版本号 gcc -v 安装命令:yum install gcc-c++ 2.安装Ruby和Rubygems 如果有网的话,则通过yum命令进行安装,自动将关联的依赖包全 ...
 
随机推荐
- 利用阿里云的源yum方式安装Mongodb
			
今天在线上服务器上安装MongoDB,从Mongo官网直接下载链接,结果在下载时发觉速度慢的可怜.迫于无奈,只能找国内的镜像下载.这里选择阿里云的源进行安装,记录如下: 1)在/etc/yum.rep ...
 - linux-镜像下载
			
https://blog.csdn.net/sinat_36564972/article/details/81560395 Centos6.5镜像下载 2018年08月10日 11:35:53 深夜搬 ...
 - 状态模式-State-订单状态
			
JAVA设计模式-状态模式-State-订单状态 21. State(状态) 意图: 允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类. 解释: 比如说对订单的提交,第一 ...
 - 个人博客作业Week3--必应词典案例分析
			
第一部分 调研,评测 (软件的bug,功能评测,黑箱测试,第8章 用户调研,12 章软件的用户体验) 下载并使用,按照描述的bug定义,找出几个功能性的比较严重的bug.至少两个.用专业的语言描述( ...
 - 《Linux内核分析》第四周学习总结
			
<Linux内核分析>第四周学习总结 ——扒开系统调用的三层皮 姓名:王玮怡 学号:20135116 理论总结部分: 第一节 用户态.内核 ...
 - 网络:LVS负载均衡原理
			
LB集群的架构和原理很简单,就是当用户的请求过来时,会直接分发到Director Server上,然后它把用户的请求根据设置好的调度算法,智能均衡地分发到后端真正服务器(real server)上.为 ...
 - FICO基础知识(一)
			
GL – 总账 (General Ledger) 总帐核算的中心任务是提供外部会计及其所涉及帐户的概貌. 总账会计主要用途:根据不同的会计准则(如欧洲的 IAS, 美国的GAAP, 中国国家会计准则) ...
 - socketserver及相关的类  (处理socket服务端)+ event事件的使用
			
编写简单的套接字服务器并不难,然而,如果要创建的并非简单服务器,还要求助于服务器模块. 模块SocketServer是标准库提供的服务器框架的基石,这个框架包括好多服务器,他们基本服务器的基础上添加了 ...
 - Bootstrap插件概述
			
前面的话 Bootstrap除了包含丰富的Web组件之外,如下拉菜单.按钮组.导航.分页等,还包括一些JavaScript的插件.插件为 Bootstrap 的组件赋予了“生命”.Bootstrap的 ...
 - Qt ------ 覆盖eventFilter(),捕获组件事件,事件处理
			
在Qt中,当一个事件发生时(例如鼠标点击或某个键盘上的按键按下),其传递顺序如图所示.从这个图可以看出,事件过滤器首先获得事件,其次才是部件的 event 函数,最后是部件的事件处理函数 事件过滤器由 ...