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. Eigen库和STL容器冲突问题

    博客参考:https://blog.csdn.net/huajun998/article/details/54311561 在程序中想使用类似于如下的容器 std::vector<Eigne:: ...

  2. DBA的工作职责和每日工作

    DBA一般职责 1.安装和升级数据库服务器,以及应用程序工具构建和配置网络环境. 2.熟悉数据库系统的存储结构预测未来的存储需求,制订数据库的存储方案. 3.根据开发人员设计的应用系统需求创建数据库存 ...

  3. sql拼接字符串

    update boc_loan_apply set birthday=concat(birthday,'-01');

  4. Redis 安装配制

    Redis 安装配制 redis 安装分为单机安装.伪集群安装.集群安装. Redis 下载地址:http://www.redis.cn/download.html Redis 在线测试工具:http ...

  5. 用MapReduce读HBase写MongoDB样例

    1.版本信息: Hadoop版本:2.7.1 HBase版本:1.2.1 MongDB版本:3.4.14 2.HBase表名及数据: 3.Maven依赖: <dependency> < ...

  6. TableLayout 里的TextView等组的LayoutParams参数问题

    TableLayout 里的TextView等组的LayoutParams参数不能是LinearLayout.LayoutParams这样来定义, 只能是用TableRow.LayoutParams ...

  7. Tomcat8 配置APR模式

    首先说明下tomcat connector运行的3中模式及区别: 1)bio 默认的模式,同步阻塞,性能非常低下,没有经过任何优化处理和支持. 2)nio  同步非阻塞,利用java的异步io护理技术 ...

  8. spark yarn 集群提交kafka代码

    配置好hadoop的环境,具体根据http://blog.csdn.net/u010638969/article/details/51283216博客所写的进行配置. 运行start-dfs.sh启动 ...

  9. Spring配置bean的方法(工厂方法和Factorybean)

    通过工厂方法配置bean 通过调用静态工厂方法创建bean 通过静态工厂方法创建bean是将对象创建的过程封装到静态方法中.当客户端需要对象时,只需要简单地调用静态方法,而不关心创建对象的细节. 要声 ...

  10. 对/proc/cpuinfo文件下的各个参数的说明及实践

    我们通常要检查系统的cpu的相关信息,之前在进行查看cpu的信息的时候,我最长用的方式 是,直接将/etc/cpuinfo下的所有的内容进行显示,然后通过对全部文件的查看,来提取我们需要的信息,虽然查 ...