Redis在windows下集群搭建

来源:互联网 发布:韦德去骑士数据 编辑:程序博客网 时间:2024/05/16 08:10

原文地址:http://www.jianshu.com/p/22af55518f6d


一、开发环境

1、win7

2、redis 3.0 64位

3、ruby环境

二、相关安装

1、redis安装

参考:http://blog.csdn.net/littleskey/article/details/52241904

2、ruby环境准备

下载 64位的 RubyInstaller并安装 地址http://rubyinstaller.org/downloads/勾选下面三个不用配置环境变量


3、RubyGems安装

下载下来是一个压缩包,解压运行里面的 setup.rb 安装 rubyGems

(原文说ruby的源很慢,换成淘宝的源。本文实现时,淘宝的源已不可用,在此不更换源。如需更换,请查看原文)

4、下载redis-trib.rb

参照上文下载下来的redis包,没有该文件。到https://github.com/antirez/redis/tree/unstable/src 目录下下载。之前的ruby环境就是为运行这个文件做准备的。

三、Redis相关配置

文档说明:http://doc.redisfans.com/topic/cluster-tutorial.html#id5

要让集群正常运作至少需要三个主节点, 不过在刚开始试用集群功能时, 强烈建议使用六个节点: 其中三个为主节点, 而其余三个则是各个主节点的从节点。

1、创建节点

创建六个文件夹,每个文件夹复制一份下载的Redis包。如:


2、修改redis.window.conf文件

(1)修改各个文件对应的端口号。如:

修改redis-lates1中redis.window.conf的port为7000

修改redis-lates2中redis.window.conf的port为7001

依次类推。

(2)公共部分

appendonly yescluster-enabled yescluster-config-file nodes.confcluster-node-timeout 5000

3、创建启动脚本startRedis.bat

这样不用总是敲命令,其他几个文件夹同理


4、启动集群

(1)启动上面所说各个redis实例

(2)到redis-trib.rb(没有参考二 4、下载redis-trib.rb)所在目录运行命令

redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

redis-trib.rbcreate, 这表示我们希望创建一个新的集群。选项 --replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。之后跟着的其他参数则是实例的地址列表, 我们希望程序使用这些地址所指示的实例来创建新集群

(replicas 后为1不为小写L)

 以上命令的意思就是让 redis-trib 程序创建一个包含三个主节点和三个从节点的集群。

(3)执行结果

打印出配置信息,现在的master是 7000 7001 7002这三台机,redis会对key 做 CRC16 校验和后分别存储这三台机上。没问题就输入 yes(上例未输入yes,程序中止)

例如 7000 这台机 slots:0-5460 的意思是:

对key 做 CRC16 校验和后 值在 0-5460范围内都会存到这台机器里。例如 key=288 对应的CRC16校验和 为 4258,应该存在7000这台机里

四、Jedis编程使用集群

package com.learn.redis;import java.util.HashSet;import java.util.Set;import org.junit.Before;import org.junit.Test;import redis.clients.jedis.HostAndPort;import redis.clients.jedis.JedisCluster;public class RedisClusterTest {private JedisCluster jc;@Beforepublic void init(){Set<HostAndPort> nodes = new HashSet<>();//Jedis Cluster会自动发现集群中的节点nodes.add(new HostAndPort("127.0.0.1", 7000));jc = new JedisCluster(nodes);}@Testpublic void test(){jc.set("foo","bar");System.out.println(jc.get("foo"));}}


 

0 0
原创粉丝点击