转:

java操作redis集群配置[可配置密码]和工具类

 
  1.  
    <dependency>
  2.  
    <groupId>redis.clients</groupId>
  3.  
    <artifactId>jedis</artifactId>
  4.  
    <version>2.9.0</version>
  5.  
    </dependency>
  6.  
    <dependency>
  7.  
    <groupId>org.apache.commons</groupId>
  8.  
    <artifactId>commons-pool2</artifactId>
  9.  
    <version>2.4.2</version>
  10.  
    </dependency>

注意:
版本:jedis2.9.0[此版本可以加入密码配置]+commons-pools2.4.2

配置:

  <context:property-placeholder ignore-unresolvable="true" location="classpath*:cache.properties"/>
  1.  
    <!-- 连接池配置 -->
  2.  
    <bean id="jedisConfig" class="redis.clients.jedis.JedisPoolConfig">
  3.  
    <!-- 最大连接数 -->
  4.  
    <property name="maxTotal" value="150" />
  5.  
    <!-- 最大空闲连接数 -->
  6.  
    <property name="maxIdle" value="50" />
  7.  
    <!-- 最小空闲连接数 -->
  8.  
    <property name="minIdle" value="10" />
  9.  
    <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->
  10.  
    <property name="maxWaitMillis" value="3000" />
  11.  
    <!-- 每次释放连接的最大数目 -->
  12.  
    <property name="numTestsPerEvictionRun" value="100" />
  13.  
    <!-- 释放连接的扫描间隔(毫秒) -->
  14.  
    <property name="timeBetweenEvictionRunsMillis" value="3000" />
  15.  
    <!-- 连接最小空闲时间 -->
  16.  
    <property name="minEvictableIdleTimeMillis" value="1800000" />
  17.  
    <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->
  18.  
    <property name="softMinEvictableIdleTimeMillis" value="10000" />
  19.  
    <!-- 在获取连接的时候检查有效性, 默认false -->
  20.  
    <property name="testOnBorrow" value="true" />
  21.  
    <!-- 在空闲时检查有效性, 默认false -->
  22.  
    <property name="testWhileIdle" value="true" />
  23.  
    <!-- 在归还给pool时,是否提前进行validate操作 -->
  24.  
    <property name="testOnReturn" value="true" />
  25.  
    <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
  26.  
    <property name="blockWhenExhausted" value="false" />
  27.  
    </bean>
  28.  
     
  29.  
     
  30.  
    <!-- jedis集群版配置 -->
  31.  
    <bean id="hostport1" class="redis.clients.jedis.HostAndPort">
  32.  
    <constructor-arg name="host" value="${redis.host}"/>
  33.  
    <constructor-arg name="port" value="${redis.port1}"/>
  34.  
    </bean>
  35.  
     
  36.  
    <bean id="hostport2" class="redis.clients.jedis.HostAndPort">
  37.  
    <constructor-arg name="host" value="${redis.host}"/>
  38.  
    <constructor-arg name="port" value="${redis.port2}"/>
  39.  
    </bean>
  40.  
     
  41.  
    <bean id="hostport3" class="redis.clients.jedis.HostAndPort">
  42.  
    <constructor-arg name="host" value="${redis.host}"/>
  43.  
    <constructor-arg name="port" value="${redis.port3}"/>
  44.  
    </bean>
  45.  
     
  46.  
    <bean id="hostport4" class="redis.clients.jedis.HostAndPort">
  47.  
    <constructor-arg name="host" value="${redis.host}"/>
  48.  
    <constructor-arg name="port" value="${redis.port4}"/>
  49.  
    </bean>
  50.  
     
  51.  
    <bean id="hostport5" class="redis.clients.jedis.HostAndPort">
  52.  
    <constructor-arg name="host" value="${redis.host}"/>
  53.  
    <constructor-arg name="port" value="${redis.port5}"/>
  54.  
    </bean>
  55.  
     
  56.  
    <bean id="hostport6" class="redis.clients.jedis.HostAndPort">
  57.  
    <constructor-arg name="host" value="${redis.host}"/>
  58.  
    <constructor-arg name="port" value="${redis.port6}"/>
  59.  
    </bean>
  60.  
     
  61.  
    <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
  62.  
    <constructor-arg name="jedisClusterNode">
  63.  
    <set>
  64.  
    <ref bean="hostport1"/>
  65.  
    <ref bean="hostport2"/>
  66.  
    <ref bean="hostport3"/>
  67.  
    <ref bean="hostport4"/>
  68.  
    <ref bean="hostport5"/>
  69.  
    <ref bean="hostport6"/>
  70.  
    </set>
  71.  
    </constructor-arg>
  72.  
    <constructor-arg name="connectionTimeout" value="2000"/>
  73.  
    <constructor-arg name="soTimeout" value="2000"/>
  74.  
    <constructor-arg name="maxAttempts" value="3"/>
  75.  
    <constructor-arg name="password" value="${redis.clusterpassword}"/>
  76.  
    <constructor-arg name="poolConfig">
  77.  
    <ref bean="jedisConfig"/>
  78.  
    </constructor-arg>
  79.  
    </bean>
  80.  
    <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:

  1.  
    import org.codehaus.jackson.type.TypeReference;
  2.  
     
  3.  
    import java.util.List;
  4.  
     
  5.  
    /**
  6.  
    * Created by gzy on 2017/11/17 17:16.
  7.  
    */
  8.  
     
  9.  
    public interface JedisClient {
  10.  
    String get(String key);
  11.  
     
  12.  
    <T> T get(String key, TypeReference<T> clazz);
  13.  
     
  14.  
    <T> T get(String key, Class<T> clazz);
  15.  
     
  16.  
    String get(String key, int select);
  17.  
     
  18.  
    void setAndExpire(String key, Object o, int expire);
  19.  
     
  20.  
    Long rpush(String key, String string);
  21.  
     
  22.  
    // Long del(String... keys);
  23.  
    Long lpush(String key, String string);
  24.  
     
  25.  
    void set(String key, Object o);
  26.  
     
  27.  
    String set(String key, String value);
  28.  
     
  29.  
    String hget(String hkey, String key);
  30.  
     
  31.  
    long hset(String hkey, String key, String value);
  32.  
     
  33.  
    long incr(String key);
  34.  
     
  35.  
    long expire(String key, int second);
  36.  
     
  37.  
    long ttl(String key);
  38.  
     
  39.  
    long del(String key);
  40.  
     
  41.  
    long hdel(String hkey, String key);
  42.  
     
  43.  
    Boolean exists(String key);
  44.  
     
  45.  
    Long decr(String key);
  46.  
     
  47.  
    List<String> brpop(int timeout, String key);
  48.  
     
  49.  
    }

jedisClient实现类JedisClientCluster:

  1.  
    /**
  2.  
    * Created by gzy on 2017/11/17 17:17.
  3.  
    */
  4.  
     
  5.  
    import org.codehaus.jackson.type.TypeReference;
  6.  
    import com.thinkgem.jeesite.common.utils.StringUtils;
  7.  
    import org.springframework.beans.factory.annotation.Autowired;
  8.  
     
  9.  
    import redis.clients.jedis.JedisCluster;
  10.  
     
  11.  
    import java.util.List;
  12.  
     
  13.  
    public class JedisClientCluster implements JedisClient {
  14.  
     
  15.  
    @Autowired
  16.  
    private JedisCluster jedisCluster;
  17.  
     
  18.  
    public <T> T get(String key, TypeReference<T> clazz) {
  19.  
    String json = jedisCluster.get(key);
  20.  
    if (StringUtils.isNotEmpty(json)) {
  21.  
    return JsonUtil.Json2Object(json, clazz);
  22.  
    } else {
  23.  
    return null;
  24.  
    }
  25.  
    }
  26.  
     
  27.  
    public <T> T get(String key, Class<T> clazz) {
  28.  
    String json = jedisCluster.get(key);
  29.  
    if (StringUtils.isNotEmpty(json)) {
  30.  
    return JsonUtil.Json2Object(json, clazz);
  31.  
    } else {
  32.  
    return null;
  33.  
    }
  34.  
    }
  35.  
     
  36.  
    public void set(String key, Object o) {
  37.  
    String json = JsonUtil.Object2Json(o);
  38.  
    jedisCluster.set(key, json);
  39.  
    }
  40.  
     
  41.  
    public void setAndExpire(String key, Object o, int expire) {
  42.  
    String json = JsonUtil.Object2Json(o);
  43.  
    jedisCluster.set(key, json);
  44.  
    jedisCluster.expire(key, expire);
  45.  
    }
  46.  
     
  47.  
    // public long del(String key) {
  48.  
    // return jedisCluster.del(key);
  49.  
    // }
  50.  
     
  51.  
    public String get(String key) {
  52.  
    return jedisCluster.get(key);
  53.  
    }
  54.  
     
  55.  
    public String get(String key, int select) {
  56.  
    jedisCluster.select(select);
  57.  
    return jedisCluster.get(key);
  58.  
    }
  59.  
     
  60.  
    @Override
  61.  
    public String set(String key, String value) {
  62.  
    return jedisCluster.set(key, value);
  63.  
    }
  64.  
     
  65.  
    @Override
  66.  
    public String hget(String hkey, String key) {
  67.  
    return jedisCluster.hget(hkey, key);
  68.  
    }
  69.  
     
  70.  
    @Override
  71.  
    public long hset(String hkey, String key, String value) {
  72.  
    return jedisCluster.hset(hkey, key, value);
  73.  
    }
  74.  
     
  75.  
    @Override
  76.  
    public long incr(String key) {
  77.  
    return jedisCluster.incr(key);
  78.  
    }
  79.  
     
  80.  
    public Long decr(String key) {
  81.  
    return jedisCluster.decr(key);
  82.  
    }
  83.  
     
  84.  
    @Override
  85.  
    public long expire(String key, int second) {
  86.  
    return jedisCluster.expire(key, second);
  87.  
    }
  88.  
     
  89.  
    @Override
  90.  
    public long ttl(String key) {
  91.  
    return jedisCluster.ttl(key);
  92.  
    }
  93.  
     
  94.  
    @Override
  95.  
    public long del(String key) {
  96.  
    return jedisCluster.del(key);
  97.  
    }
  98.  
     
  99.  
    @Override
  100.  
    public long hdel(String hkey, String key) {
  101.  
     
  102.  
    return jedisCluster.hdel(hkey, key);
  103.  
    }
  104.  
     
  105.  
    public Long rpush(String key, String string) {
  106.  
    return jedisCluster.rpush(key, string);
  107.  
    }
  108.  
     
  109.  
    public Long lpush(String key, String string) {
  110.  
    return jedisCluster.lpush(key, string);
  111.  
    }
  112.  
     
  113.  
    public Boolean exists(String key) {
  114.  
    return jedisCluster.exists(key);
  115.  
    }
  116.  
     
  117.  
    public List<String> brpop(int timeout, String key) {
  118.  
    return jedisCluster.brpop(timeout, key);
  119.  
    }
  120.  
     
  121.  
    }

创建测试类ClusterTest:

  1.  
    import xx.xx.xxx.xxxx.JedisClient;
  2.  
    import org.junit.Test;
  3.  
    import org.junit.runner.RunWith;
  4.  
    import org.springframework.beans.factory.annotation.Autowired;
  5.  
    import org.springframework.test.context.ContextConfiguration;
  6.  
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  7.  
     
  8.  
    /**
  9.  
    * Created by gzy on 2017/11/20 15:22.
  10.  
    */
  11.  
    @RunWith(SpringJUnit4ClassRunner.class)
  12.  
    @ContextConfiguration("classpath:spring-context-cache.xml")
  13.  
    public class ClusterTest {
  14.  
    // private static JedisClientCluster redisCluster = SpringContextHolder.getBean("jedisClientCluster");
  15.  
    @Autowired
  16.  
    private JedisClient jedisClient;
  17.  
     
  18.  
    @Test
  19.  
    public void testJCluster() {
  20.  
    jedisClient.set("test:phone:" + "11111111","hhha");
  21.  
    String result = jedisClient.get("test:phone:" + "11111111")
  22.  
    System.out.println("result==="+result)
  23.  
     
  24.  
    }}

原文地址:

java操作redis集群配置[可配置密码]和工具类(比较好用)的更多相关文章

  1. java操作redis集群配置[可配置密码]和工具类

    java操作redis集群配置[可配置密码]和工具类     <dependency>   <groupId>redis.clients</groupId>   & ...

  2. Java操作 Redis 集群

    // 连接redis集群 @Test public void testJedisCluster() { JedisPoolConfig config = new JedisPoolConfig(); ...

  3. Springboot 2.0.x 集成基于Centos7的Redis集群安装及配置

    Redis简介 Redis是一个基于C语言开发的开源(BSD许可),开源高性能的高级内存数据结构存储,用作数据库.缓存和消息代理.它支持数据结构,如 字符串.散列.列表.集合,带有范围查询的排序集,位 ...

  4. python 操作redis集群

    一.连接redis集群 python的redis库是不支持集群操作的,推荐库:redis-py-cluster,一直在维护.还有一个rediscluster库,看GitHub上已经很久没更新了. 安装 ...

  5. Redis设置认证密码 Redis使用认证密码登录 在Redis集群中使用认证密码

    Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用.这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安 ...

  6. 转:Redis设置认证密码 Redis使用认证密码登录 在Redis集群中使用认证密码

    Redis默认配置是不需要密码认证的,也就是说只要连接的Redis服务器的host和port正确,就可以连接使用.这在安全性上会有一定的问题,所以需要启用Redis的认证密码,增加Redis服务器的安 ...

  7. redis集群(主从配置)

    市面上太多kv的缓存,最常用的就属memcache了,但是memcache存在单点问题,不过小日本有复制版本,但是使用的人比较少,redis的出现让kv内存存储的想法成为现实.今天主要内容便是redi ...

  8. Java连接redis集群操作存储、删除以及获取值

    pom文件添加: <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> &l ...

  9. Redis集群创建和配置

    1.检查GCC是否安装,可以看看版本号 gcc -v 安装命令:yum install gcc-c++ 2.安装Ruby和Rubygems 如果有网的话,则通过yum命令进行安装,自动将关联的依赖包全 ...

随机推荐

  1. WPF中自定义MarkupExtension

    在介绍这一篇文章之前,我们首先来回顾一下WPF中的一些基础的概念,首先当然是XAML了,XAML全称是Extensible Application Markup Language (可扩展应用程序标记 ...

  2. python设计模式第二十四天【命令模式】

    1.使用场景 (1)调用过程比较繁琐,需要封装 (2)调用参数需要进行处理封装 (3)需要添加额外的功能,例如,日志,缓存,操作记录等 2.代码实现 #!/usr/bin/env python #! ...

  3. Scrapy网络爬虫框架的开发使用

    1.安装 2.使用scrapy startproject  project_name 命令创建scrapy项目 如图: 3.根据提示使用scrapy genspider spider_name dom ...

  4. indexOf刚开始写成IndexOf出错

    {{# if(d.fronturlmin ==null||d.fronturlmin ==""){ }} <img src="@System.Configurati ...

  5. 使用layui 做后台管理界面,在Tab中的链接点击后添加一个新TAB的解决方法

    给链接或按钮  添加 onclick="self.parent.addTab('百度','http://www.baidu.com','icon-add')" 如: <a h ...

  6. JUC虚假唤醒(六)

    为什么条件锁会产生虚假唤醒现象(spurious wakeup)? ​ 在不同的语言,甚至不同的操作系统上,条件锁都会产生虚假唤醒现象.所有语言的条件锁库都推荐用户把wait()放进循环里: whil ...

  7. 当页面是动态时 如果后台存储id可以通过查询后台方式获取对象;当后台没有存储时候 只有通过前端标记了 例如标记数量为10 我们根据传递过来的10循环取值

    当页面是动态时 如果后台存储id可以通过查询后台方式获取对象;当后台没有存储时候 只有通过前端标记了 例如标记数量为10 我们根据传递过来的10循环取值

  8. henrylee2cn简单的rpc服务

    server 端package controllers import ( "github.com/henrylee2cn/teleport" "model/system& ...

  9. java json转换(一)

    主要使用了2个类 JsonConvert.class 和 ConvertHelper.class 由于常规转json.只要model牵涉到复杂的关联实体对象.那么就会出现 深度循环的错误. 因此这里通 ...

  10. BZOJ1835 [ZJOI2010] 基站选址 【动态规划】【线段树】

    题目分析: 首先想一个DP方程,令f[m][n]表示当前在前n个村庄选了m个基站,且第m个基站放在n处的最小值,转移可以枚举上一个放基站的村庄,然后计算两个村庄之间的代价. 仔细思考两个基站之间村庄的 ...