使用Spring Data Redis操作Redis(集群版)

继上一篇文章http://www.cnblogs.com/EasonJim/p/7804545.html使用Spring Data Redis操作Redis用的是单机版,如果是集群版的集成其实差别不大。主要思路如下:

1、先建立连接工厂,这个连接工厂是用来设置IP,端口,账号密码等。(在这一步时,传递一个集群的地址列表,不再是单独一个去指定)

2、通过连接工厂建立Session。

3、然后在代码上注入Session进行使用。

简要实现步骤,操作的方法和单机版的类似:

一、使用spring-data-redis的Jar包准备

首先spring-data-redis需要在1.7 版本以上。

POM:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-redis</artifactId>
    <version>1.7.5.RELEASE</version>
</dependency>

他会依赖一些包,比如说spring-data-commons ,在spring-data-x系列里,都要依赖这个包。如果你之前项目里使用到了spring-data-x系列的包,可能需要升级,因为都共同依赖了spring-data-commons ,但是在当前集群要使用的spring-data-redisspring-data-commons必须要1.12.x版本以上,这个问题要注意一下。

二、spring-data-redis配置文件配置

<description>Jedis Cluster Configuration</description>
<!-- 加载配置属性文件 按需加载 -->
<context:property-placeholder
    ignore-unresolvable="true" location="classpath:redis.cluster.properties" />
<!-- 配置Cluster -->
<bean id="redisClusterConfiguration"
    class="org.springframework.data.redis.connection.RedisClusterConfiguration">
    <property name="maxRedirects" value="3"></property>
    <!-- 节点配置 -->
    <property name="clusterNodes">
        <set>
            <bean class="org.springframework.data.redis.connection.RedisClusterNode">
                <constructor-arg name="host" value="192.168.0.201"></constructor-arg>
                <constructor-arg name="port" value="30006"></constructor-arg>
            </bean>
            <bean class="org.springframework.data.redis.connection.RedisClusterNode">
                <constructor-arg name="host" value="192.168.0.201"></constructor-arg>
                <constructor-arg name="port" value="30001"></constructor-arg>
            </bean>
            <bean class="org.springframework.data.redis.connection.RedisClusterNode">
                <constructor-arg name="host" value="192.168.0.201"></constructor-arg>
                <constructor-arg name="port" value="30002"></constructor-arg>
            </bean>
            <bean class="org.springframework.data.redis.connection.RedisClusterNode">
                <constructor-arg name="host" value="192.168.0.201"></constructor-arg>
                <constructor-arg name="port" value="30003"></constructor-arg>
            </bean>
            <bean class="org.springframework.data.redis.connection.RedisClusterNode">
                <constructor-arg name="host" value="192.168.0.201"></constructor-arg>
                <constructor-arg name="port" value="30004"></constructor-arg>
            </bean>
            <bean class="org.springframework.data.redis.connection.RedisClusterNode">
                <constructor-arg name="host" value="192.168.0.201"></constructor-arg>
                <constructor-arg name="port" value="30005"></constructor-arg>
            </bean>
        </set>
    </property>
</bean>
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
    <property name="maxIdle" value="100" />
    <property name="maxTotal" value="600" />
</bean>
<bean id="jeidsConnectionFactory"
    class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
    <constructor-arg ref="redisClusterConfiguration" />
    <constructor-arg ref="jedisPoolConfig" />
</bean>
<!-- redis 访问的模版 -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
    <property name="connectionFactory" ref="jeidsConnectionFactory" />
</bean>

操作:

    @Autowired
    RedisTemplate redisTemplate;
    @Test
    public void testUserInfo() {

        redisTemplate.execute(new RedisCallback<Integer>() {
            //这里返回值是个上面的RedisCallback<Integer> 中的泛型一直,
            public Integer doInRedis(RedisConnection connection) {
                int i = 0;
                for (; i < 100; i++) {
                    byte[] key = ("key:" + i).getBytes();
                    byte[] value = ("value:" + i).getBytes();
                    connection.set(key, value);
                }
                //这里返回值是个上面的RedisCallback<Integer> 中的泛型一直,
                return i;

            }
        });

    }

参考:

https://docs.spring.io/spring-data/redis/docs/1.8.8.RELEASE/reference/html/#cluster(官方文档,基于注解的形式注入)

http://www.sojson.com/blog/203.html(以上内容转自此篇文章,基于XML的配置)

http://blog.csdn.net/MOTUI/article/details/52903397

http://blog.csdn.net/moshenglv/article/details/72637305

时间: 2024-10-10 12:24:13

使用Spring Data Redis操作Redis(集群版)的相关文章

Redis发布了集群版3.0.0 beta

Redis不是比较成熟的Memcache或者Mysql的替代品,是对于大型互联网类应用在架构上很好的补充.现在有越来越多的应用也在纷纷基于Redis做架构的改造. Redis已经发布集群版3.0.0beta,相信在不久的将来就会出稳定版本. redis cluster 集群规范 安装 Redis集群版3.0.0beta版的功能介绍如下: This is the first beta of Redis 3.0.0. Redis 3.0 features support for Redis Clus

JedisClient操作redis 单机版和集群版

一.在pom文件中添加依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.0.1</version> </dependency> 二.准备Jed

Redis单机版和集群版的安装和部署

1.单机版的安装 本次使用redis3.0版本.3.0版本主要增加了redis集群功能. 安装的前提条件: 需要安装gcc:yum install gcc-c++ 1.1 安装redis 1.下载redis的源码包. 从官网下载 http://download.redis.io/releases/redis-3.0.0.tar.gz 2.把源码包上传到linux服务器 3.解压源码包并进入其目录 tar -zxvf redis-3.0.0.tar.gz 4.make cd /usr/local/

solrj 操作 solr 集群版

一.添加 @Test public void testAddDocument() throws Exception{ //创建一个集群的连接,应该使用 CloudSolrServer,//zkHost:zookeeper 的地址表 String zkHost = "192.168.25.129:2181,192.168.25.129:2182,192.168.25.129:2183"; CloudSolrServer solrServer = new CloudSolrServer(z

项目里面加入redis单机版 和集群版的配置

第一步: 如果你是maven项目,你直接配置就可以了,如果不是需要下载这个包 jedis包 <!-- Redis  客户端 -->          <dependency>                <groupId>redis.clients</groupId>                <artifactId>jedis</artifactId>  </dependency> 2.  单机版测试 @Test 

使用Spring Data Redis操作Redis(二)

上一篇讲述了Spring Date Redis操作Redis的大部分主题,本篇介绍Redis的订阅和发布功能在Spring应用中的使用. 1. Redis的Pub/Sub命令 Redis的订阅和发布服务有如下图6个命令,下面分别对每个命令做简单说明. publish: 向指定的channel(频道)发送message(消息) subscribe:订阅指定channel,可以一次订阅多个 psubscribe:订阅指定pattern(模式,具有频道名的模式匹配)的频道 unsubscribe:取消

Redis高可用集群

Redis 高可用集群 Redis 的集群主从模型是一种高可用的集群架构.本章主要内容有:高可用集群的搭建,Jedis连接集群,新增集群节点,删除集群节点,其他配置补充说明. 高可用集群搭建 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术. Redis 3.0 之后便支持集群.Redis 集群中内置了 16384 个哈希槽.Redis 会根据节点数量大致均等的将哈希槽映射到不同

Redis中sentinel集群的搭建和Jedis测试 图文教程[三]

在前两篇Redis中sentinel集群的搭建和Jedis测试 图文教程[一] 和Redis中sentinel集群的搭建和Jedis测试 图文教程[二] 中分别简述了Redis中sentinel集群的搭建和Java代码的Jedis测试. 这篇主要来简单分析一下Redis-sentinel集群的原理,根据追踪sentinel信息来完成Redis-sentinel集群测试中的详细的原理分析.包括master-slave各个中的sentinel信息的分析,failover过程,master宕机后的le

Redis 3.0集群(二)

在Redis 3.0集群(一)中讲了Redis集群的基本搭建.这一节主要讲对Redis集群的操作. 添加Master节点到集群 按照Redis集群一的方式,创建端口为7006的新实例,并启动该实例 将7006添加到集群: redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000 node:新节点没有包含任何数据, 因为它没有包含任何slot.新加入的加点是一个主节点, 当集群需要将某个从节点升级为新的主节点时, 这个新节点不会被选中. 给新节点分配