Redis集群至少需要3个主节点

# cd /usr/redis

创建一个目录

# mkdir cluster

# cd cluster

1、复制一个配置文件

# cp ../redis.conf 9001.conf

修改配置文件

# vim 9001.conf

port 9001

appendonly yes

cluster-enabled yes

cluster-config-file nodes-9001.conf

cluster-node-timeout 5000

2、复制两份配置文件,并修改

# cp 9001.conf 9002.conf

# cp 9001.conf 9003.conf

3、启动3个redis实例

# redis-server 9001.conf &

# redis-server 9002.conf &

# redis-server 9003.conf &

4、启用集群(0 表示不启用副本, 如果设置成数值,例如1,表示每个主机启用一个从机,集群至少需要6个节点)

# redis-trib.rb create --replicas 192.168.77.136:9001 192.168.77.136:9002 192.168.77.136:9003

4.1 执行上面的命令的时候会报错,因为是执行的ruby的脚本,需要ruby的环境

错误内容:/usr/bin/env: ruby: No such file or directory

所以需要安装ruby的环境,这里推荐使用yum install ruby安装

# yum install ruby

4.2 然后再执行创建集群命令,还会报错,提示缺少rubygems组件,使用yum安装

错误内容:

./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)

from ./redis-trib.rb:24

# yum install rubygems

4.3 再次执行集群创建命令,还会报错,提示不能加载redis,是因为缺少redis和ruby的接口,使用gem 安装

错误内容:

/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- redis (LoadError)

from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'

from ./redis-trib.rb:25

# yum install redis

因为源的原因,会安装失败,需要更改源信息

# gem sources --remove https://rubygems.org/

# gem source -a https://ruby.taobao.org/

# gem source -l 查看列表下是不是只有 https://ruby.taobao.org/ 这一个源,如果不是重复执行下。

源切换成功后,重新执行yum install redis

# yum install redis

安装完成后,再次执行集群命令,正常运行

>>> Creating cluster
Connecting to node 192.168.77.136:: OK
Connecting to node 192.168.77.136:: OK
Connecting to node 192.168.77.136:: OK
>>> Performing hash slots allocation on nodes...
Using masters:
192.168.77.136:
192.168.77.136:
192.168.77.136:
M: b32e955c04b37d4170860edf8ab1da0275811fe3 192.168.77.136:
slots:- ( slots) master
M: b4d0df0bec6740cf5680d14637aaa1f6f6283adb 192.168.77.136:
slots:- ( slots) master
M: 5a834200f28caad158ef1fd5fe4ff4ea4b00622b 192.168.77.136:
slots:- ( slots) master
Can I set the above configuration? (type 'yes' to accept):

输入yes

>>> Nodes configuration updated
>>> Assign a different config epoch to each node
:M Aug ::53.112 # configEpoch set to via CLUSTER SET-CONFIG-EPOCH
:M Aug ::53.112 # configEpoch set to via CLUSTER SET-CONFIG-EPOCH
:M Aug ::53.113 # configEpoch set to via CLUSTER SET-CONFIG-EPOCH
>>> Sending CLUSTER MEET messages to join the cluster
:M Aug ::53.183 # IP address for this node updated to 192.168.77.136
:M Aug ::53.284 # IP address for this node updated to 192.168.77.136
:M Aug ::53.285 # IP address for this node updated to 192.168.77.136
Waiting for the cluster to join..
>>> Performing Cluster Check (using node 192.168.77.136:)
M: b32e955c04b37d4170860edf8ab1da0275811fe3 192.168.77.136:
slots:- ( slots) master
M: b4d0df0bec6740cf5680d14637aaa1f6f6283adb 192.168.77.136:
slots:- ( slots) master
M: 5a834200f28caad158ef1fd5fe4ff4ea4b00622b 192.168.77.136:
slots:- ( slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All slots covered.
[root@Slave1 cluster]# :M Aug ::58.025 # Cluster state changed: ok
:M Aug ::58.125 # Cluster state changed: ok
:M Aug ::58.125 # Cluster state changed: ok

5、登陆集群

# redis-cli -c -p 9001

5.1 查看集群运行情况 cluster info

127.0.0.1:> cluster info
cluster_state:ok
cluster_slots_assigned:
cluster_slots_ok:
cluster_slots_pfail:
cluster_slots_fail:
cluster_known_nodes:
cluster_size:
cluster_current_epoch:
cluster_my_epoch:
cluster_stats_messages_sent:
cluster_stats_messages_received:

5.2 查看集群节点情况 cluster nodes

127.0.0.1:> cluster nodes
b32e955c04b37d4170860edf8ab1da0275811fe3 192.168.77.136: myself,master - connected -
5a834200f28caad158ef1fd5fe4ff4ea4b00622b 192.168.77.136: master - connected -
b4d0df0bec6740cf5680d14637aaa1f6f6283adb 192.168.77.136: master - connected -

5.3 简单验证

127.0.0.1:> set a abc
-> Redirected to slot [] located at 192.168.77.136:
OK
192.168.77.136:> get a
"abc"

6 java程序连接集群

import java.util.HashSet;
import java.util.Set; import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster; public class TestRedisCluster { public static void main(String[] args) {
Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
jedisClusterNodes.add(new HostAndPort("192.168.77.136", 9001));
     // 使用redis集群中的任一节点即可
JedisCluster jedis = new JedisCluster(jedisClusterNodes);
// 开始前,先移除所有的内容
jedis.del("java framework");
System.out.println(jedis.lrange("java framework", 0, -1));
// 先向key java framework中存放三条数据
jedis.lpush("java framework", "spring");
jedis.lpush("java framework", "struts");
jedis.lpush("java framework", "hibernate");
// 再取出所有数据jedis.lrange是按范围取出,
// 第一个是key,第二个是起始位置,第三个是结束位置,jedis.llen获取长度 -1表示取得所有
System.out.println(jedis.lrange("java framework", 0, -1)); jedis.del("java framework");
jedis.rpush("java framework", "spring");
jedis.rpush("java framework", "struts");
jedis.rpush("java framework", "hibernate");
System.out.println(jedis.lrange("java framework", 0, -1)); jedis.close();
}
}

127.0.0.1:9001> cluster infocluster_state:okcluster_slots_assigned:16384cluster_slots_ok:16384cluster_slots_pfail:0cluster_slots_fail:0cluster_known_nodes:3cluster_size:3cluster_current_epoch:3cluster_my_epoch:1cluster_stats_messages_sent:6275cluster_stats_messages_received:6275

java使用Redis8--3.0集群的更多相关文章

  1. 模拟安装redis5.0集群并通过Java代码访问redis集群

    在虚拟机上模拟redis5.0的集群,由于redis的投票机制,一个集群至少需要3个redis节点,如果每个节点设置一主一备,一共需要六台虚拟机来搭建集群,此处,在一台虚拟机上使用6个redis实例来 ...

  2. Spring集成jedis支持Redis3.0集群

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

  3. elasticsearch5.0集群+kibana5.0+head插件插件的安装

    elasticsearch5.0集群+kibana5.0+head插件插件的安装 es集群的规划: 两台16核64G内存的服务器: yunva_etl_es1  ip:1.1.1.1 u04es01. ...

  4. Ubuntu12.04-x64编译Hadoop2.2.0和安装Hadoop2.2.0集群

      本文Blog地址:http://www.cnblogs.com/fesh/p/3766656.html   本文对Hadoop-2.2.0源码进行重新编译(64位操作系统下不重新编译会有版本问题) ...

  5. 分布式Hbase-0.98.4在Hadoop-2.2.0集群上的部署

    fesh个人实践,欢迎经验交流!本文Blog地址:http://www.cnblogs.com/fesh/p/3898991.html Hbase 是Apache Hadoop的数据库,能够对大数据提 ...

  6. Redis 3.0 集群搭建

    Redis 3.0 集群搭建 开启两个虚拟机 分别在两个虚拟机上开启3个Redis实例 3主3从两个虚拟机里的实例互为主备 下面分别在两个虚拟机上安装,网络设置参照codis集群的前两个主机 分别关闭 ...

  7. CentOS6.4上搭建hadoop-2.4.0集群

    公司Commerce Cloud平台上提供申请主机的服务.昨天试了下,申请了3台机器,搭了个hadoop环境.以下是机器的一些配置: emi-centos-6.4-x86_64medium | 6GB ...

  8. hadoop 2.2.0 集群部署 坑

    注意fs.defaultFS为2..0新的变量,代替旧的:fs.default.name hadoop 2.2.0 集群启动命令:bin/hdfs namenode -formatsbin/start ...

  9. hadoop 2.2.0集群安装详细步骤(简单配置,无HA)

    安装环境操作系统:CentOS 6.5 i586(32位)java环境:JDK 1.7.0.51hadoop版本:社区版本2.2.0,hadoop-2.2.0.tar.gz 安装准备设置集群的host ...

  10. Ubuntu 12.04下spark1.0.0 集群搭建(原创)

    spark1.0.0新版本的于2014-05-30正式发布啦,新的spark版本带来了很多新的特性,提供了更好的API支持,spark1.0.0增加了Spark SQL组件,增强了标准库(ML.str ...

随机推荐

  1. spring mvc请求参数中文乱码解决方案

    POST 请求 在web.xml中加上增加过滤器 <filter> <filter-name>encodingFilter</filter-name> <fi ...

  2. manjaro i3 配置笔记

    更改国内源 sudo pacman-mirrors -GB testing -c China 增加Arch linuxcn源 在/etc/pacman.conf文件末尾添加两行: [archlinux ...

  3. 分析一则halcon抓边拟合直线的小案例

    例图: 完整算法: read_image (Image, 'C:/Users/Administrator/Desktop/1.png') threshold (Image, Regions, , ) ...

  4. Linux --centos7 开机启动设置

    以Linux下指定sun用户在linux开机时执行/home/sun/startrun.sh为例: 以root登录linux 执行vi /etc/rc.d/rc.local 在文档末尾添加一行语句:s ...

  5. 签名Android应用程序

    Android要求对作为产品发布的应用进行签名(包名相同的化,后安装的应用会覆盖前面安装的应用) 签名作用:1.确定发布者的身份.2.确保应用的完整性. 注意:在应用的开发.调试阶段,Eclipse的 ...

  6. sklearn.metrics import precision_recall_fscore_support

    二分类/多分类/多标签 对于二分类来说,必须定义一些matrics(f1_score,roc_auc_score).在这些case中,缺省只评估正例的label,缺省的正例label被标为1(可以通过 ...

  7. Thrift结构分析及增加取客户端IP功能实现

    目录 目录 1 1. 前言 1 2. 示例Service 1 3. 网络部分类图 2 4. 线程模式 3 4.1. IO线程 3 4.2. 工作线程 4 4.2.1. 工作线程类图 4 4.2.2.  ...

  8. write/read/send/receive函数比较

    建立好TCP连接后,就可以把得到的套接字当做文件描述符来使用,由此,联系到网络程序里的基本读写函数,write.read: l write函数: Ssize_t write(int fd,const ...

  9. ASP.NET Core2基于RabbitMQ对Web前端实现推送功能

    在我们很多的Web应用中会遇到需要从后端将指定的数据或消息实时推送到前端,通常的做法是前端写个脚本定时到后端获取,或者借助WebSocket技术实现前后端实时通讯.因定时刷新的方法弊端很多(已不再采用 ...

  10. 自我介绍及注册github和上传文件

    自我介绍: 周侃 年龄20 喜好:玩游戏,赚钱,交际 理想:想要改变中国手游界颓靡的时代,让它进入新次元. 注册github,以及上传文件: 今天给大家来讲解下如何注册githup 当我们打开gith ...