接着上一节,我们通过spring FactoryBean实现redis 3.0集群JedisCluster与spring集成。  http://www.linuxidc.com/Linux/2016-09/135123.htm

引用依赖:

<dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
   <version>2.7.3</version>
  </dependency>
  <dependency>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-pool2</artifactId>
   <version>2.4.2</version>
  </dependency>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>4.1.7.RELEASE</version>
  </dependency>java实现JedisCluster的FactoryBean。

package cn.slimsmart.jediscluster.spring;

import java.text.ParseException;
import java.util.HashSet;
import java.util.Set;

import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;

public class JedisClusterFactory implements FactoryBean<JedisCluster>, InitializingBean {

private GenericObjectPoolConfig genericObjectPoolConfig;
 private JedisCluster jedisCluster;
 private int connectionTimeout = 2000;
 private int soTimeout = 3000;
 private int maxRedirections = 5;
 private Set<String> jedisClusterNodes;

@Override
 public void afterPropertiesSet() throws Exception {
  if (jedisClusterNodes == null || jedisClusterNodes.size() == 0) {
   throw new NullPointerException("jedisClusterNodes is null.");
  }
  Set<HostAndPort> haps = new HashSet<HostAndPort>();
  for (String node : jedisClusterNodes) {
   String[] arr = node.split(":");
   if (arr.length != 2) {
    throw new ParseException("node address error !",node.length()-1);
   }
   haps.add(new HostAndPort(arr[0], Integer.valueOf(arr[1])));
  }
  jedisCluster = new JedisCluster(haps, connectionTimeout, soTimeout, maxRedirections, genericObjectPoolConfig);
 }

@Override
 public JedisCluster getObject() throws Exception {
  return jedisCluster;
 }

@Override
 public Class<?> getObjectType() {
  return (this.jedisCluster != null ? this.jedisCluster.getClass() : JedisCluster.class);
 }

@Override
 public boolean isSingleton() {
  return true;
 }

public GenericObjectPoolConfig getGenericObjectPoolConfig() {
  return genericObjectPoolConfig;
 }

public void setGenericObjectPoolConfig(GenericObjectPoolConfig genericObjectPoolConfig) {
  this.genericObjectPoolConfig = genericObjectPoolConfig;
 }

public JedisCluster getJedisCluster() {
  return jedisCluster;
 }

public void setJedisCluster(JedisCluster jedisCluster) {
  this.jedisCluster = jedisCluster;
 }

public int getConnectionTimeout() {
  return connectionTimeout;
 }

public void setConnectionTimeout(int connectionTimeout) {
  this.connectionTimeout = connectionTimeout;
 }

public int getSoTimeout() {
  return soTimeout;
 }

public void setSoTimeout(int soTimeout) {
  this.soTimeout = soTimeout;
 }

public int getMaxRedirections() {
  return maxRedirections;
 }

public void setMaxRedirections(int maxRedirections) {
  this.maxRedirections = maxRedirections;
 }

public Set<String> getJedisClusterNodes() {
  return jedisClusterNodes;
 }

public void setJedisClusterNodes(Set<String> jedisClusterNodes) {
  this.jedisClusterNodes = jedisClusterNodes;
 }
}
spring配置使用JedisCluster

<?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:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache.xsd"
 default-destroy-method="close" default-lazy-init="false">
 <bean name="genericObjectPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig">
  <property name="maxWaitMillis" value="-1" />
  <property name="maxTotal" value="8" />
  <property name="minIdle" value="0" />
  <property name="maxIdle" value="8" />
 </bean>
 <bean id="jedisCluster" class="cn.slimsmart.jediscluster.spring.JedisClusterFactory">
  <property name="connectionTimeout" value="3000" />
  <property name="soTimeout" value="3000" />
  <property name="maxRedirections" value="5" />
  <property name="genericObjectPoolConfig" ref="genericObjectPoolConfig" />
  <property name="jedisClusterNodes">
   <set>
    <value>192.168.36.54:6380</value>
    <value>192.168.36.54:6381</value>
    <value>192.168.36.54:6382</value>
    <value>192.168.36.54:6383</value>
    <value>192.168.36.189:6380</value>
    <value>192.168.36.189:6381</value>
    <value>192.168.36.189:6382</value>
    <value>192.168.36.189:6383</value>
   </set>
  </property>
 </bean>

</beans>可以在应用中注入JedisCluster处理业务。

下面关于Redis的文章您也可能喜欢,不妨参考下:

Ubuntu 14.04下Redis安装及简单测试 http://www.linuxidc.com/Linux/2014-05/101544.htm

Redis主从复制基本配置 http://www.linuxidc.com/Linux/2015-03/115610.htm

Redis集群明细文档 http://www.linuxidc.com/Linux/2013-09/90118.htm

Ubuntu 12.10下安装Redis(图文详解)+ Jedis连接Redis http://www.linuxidc.com/Linux/2013-06/85816.htm

Redis系列-安装部署维护篇 http://www.linuxidc.com/Linux/2012-12/75627.htm

CentOS 6.3安装Redis http://www.linuxidc.com/Linux/2012-12/75314.htm

Redis安装部署学习笔记 http://www.linuxidc.com/Linux/2014-07/104306.htm

Redis配置文件redis.conf 详解 http://www.linuxidc.com/Linux/2013-11/92524.htm

Redis 的详细介绍请点这里 
Redis 的下载地址请点这里

转载:http://www.linuxidc.com/Linux/2016-09/135124.htm

Spring集成jedis支持Redis3.0集群的更多相关文章

  1. spring集成 JedisCluster 连接 redis3.0 集群

    最近在公司做了 jedisCluster整合spring 的配置, 分享如下 客户端采用最新的jedis 2.7 1. maven依赖: <dependency> <groupId& ...

  2. Dubbo入门到精通学习笔记(十八):使用Redis3.0集群实现Tomcat集群的Session共享

    文章目录 1.单节点访问http://192.168.1.61:8082/pay-web-boss/: 2.增加多一个消费者节点:192.168.1.62,以同样的方式部署pay-web-boss工程 ...

  3. Redis3.0集群方案分析

    在Redis3.0集群出来之前,大家都对作者antirez寄予厚望,因为Redis从来没有让我们失望过.现在Redis3.0集群出来了,网上出了很多评论文章,都说他的功能多么强大,包括下面这张图是彻底 ...

  4. redis3.0集群搭建

    生产环境中准备使用redis3.0集群了,花了一天时间研究了一下,下面记录一下集群搭建的过程. 服务器规划: 192.168.116.129    7000,7003 192.168.116.130 ...

  5. redis3.0集群部署和测试

    redis3.0集群部署和测试 环境介绍 两台Centos7的虚拟机模拟6个节点,A台3个master节点,B台3个slave节点A地址:172.16.81.140B地址:172.16.81.141r ...

  6. CentOS完美搭建Redis3.0集群并附测试

    线上的统一聊天和推送项目使用的是redis主从,redis版本2.8.6 redis主从和mysql主从目的差不多,但redis主从配置很简单,主要在从节点配置文件指定主节点ip和端口:slaveof ...

  7. redis3.0 集群实战3 - java编程实战

    本文主要描述使用jedis进行redis-cluster操作   jedis jedis是redis官方推荐使用的java redis客户端,github地址为,https://github.com/ ...

  8. redis3.0 集群实战1 -- 安装和配置

    本文主要是在centos7上安装和配置redis集群实战 参考: http://hot66hot.iteye.com/blog/2050676 集群教程: http://redisdoc.com/to ...

  9. redis3.0集群使用发现的一些问题

    1.看了官方文档,没有发现有关整个集群关闭再启动的方法.集群是多机器多节点运行,一般情况不可能出现所有机器都挂掉.但万一同时挂掉,数据丢失的可能性就极大了. 验证方法:手动关闭了集群中所有节点,然后再 ...

随机推荐

  1. IOS自定义日历控件的简单实现(附思想及过程)

    因为程序要求要插入一个日历控件,该空间的要求是从当天开始及以后的六个月内的日历,上网查资料基本上都说只要获取两个条件(当月第一天周几和本月一共有多少天)就可以实现一个简单的日历,剩下的靠自己的简单逻辑 ...

  2. python进阶笔记 thread 和 threading模块学习

    Python通过两个标准库thread和threading提供对线程的支持.thread提供了低级别的.原始的线程以及一个简单的锁.threading基于Java的线程模型设计.锁(Lock)和条件变 ...

  3. sudo: /etc/sudoers is world writable

    错误信息: sudo: /etc/sudoers is world writable sudo: no valid sudoers sources found, quitting 解决办法: 修复磁盘 ...

  4. 通过CSS实现小动物

    此例演示的是通过CSS实现动物头像,效果如下: 好了,上代码: html代码: <html> <head> <meta charset="utf-8" ...

  5. select2插件

    引入select2插件<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min. ...

  6. Linux中的find(-atime、-ctime、-mtime)指令分析

    本篇主要对find -atime(-ctime..mtime)指令的用法.参数.运行情况进行分析 用法: find . {-atime/-ctime/-mtime/-amin/-cmin/-mmin} ...

  7. hession

    Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单.快捷.采用的是二进制RPC协议,因为采用的是二进制协 ...

  8. java开发命名规范

    使用前注意事项: 1.  由于Java面向对象编程的特性, 在命名时应尽量选择名词 2.  驼峰命名法(Camel-Case): 当变量名或函式名是由一个或多个单字连结在一起,而构成的唯一识别字时,首 ...

  9. 用js编程输出100以内所有的质数和个数(提示:一个大于1的自然数,除了1和它本身外,不能被其他自然数整除的数都是质数)

    <script type="text/javascript"> for(var i = 3; i <= 100; i ++) {//控制2-100所有的数i fo ...

  10. 判断是否存在哈密顿路--HDU 5424

    题意:给一张无向图,判断是否是哈密顿图. 哈密顿路:经过每个点有且仅有一次的一条通路. 方法:每次找度数最小的点作为起点,然后dfs整个图,看能遍历到的点的数目能否达到n. #include<i ...