java使用Redis8--3.0集群
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集群的更多相关文章
- 模拟安装redis5.0集群并通过Java代码访问redis集群
在虚拟机上模拟redis5.0的集群,由于redis的投票机制,一个集群至少需要3个redis节点,如果每个节点设置一主一备,一共需要六台虚拟机来搭建集群,此处,在一台虚拟机上使用6个redis实例来 ...
- Spring集成jedis支持Redis3.0集群
接着上一节,我们通过spring FactoryBean实现redis 3.0集群JedisCluster与spring集成. http://www.linuxidc.com/Linux/2016- ...
- elasticsearch5.0集群+kibana5.0+head插件插件的安装
elasticsearch5.0集群+kibana5.0+head插件插件的安装 es集群的规划: 两台16核64G内存的服务器: yunva_etl_es1 ip:1.1.1.1 u04es01. ...
- Ubuntu12.04-x64编译Hadoop2.2.0和安装Hadoop2.2.0集群
本文Blog地址:http://www.cnblogs.com/fesh/p/3766656.html 本文对Hadoop-2.2.0源码进行重新编译(64位操作系统下不重新编译会有版本问题) ...
- 分布式Hbase-0.98.4在Hadoop-2.2.0集群上的部署
fesh个人实践,欢迎经验交流!本文Blog地址:http://www.cnblogs.com/fesh/p/3898991.html Hbase 是Apache Hadoop的数据库,能够对大数据提 ...
- Redis 3.0 集群搭建
Redis 3.0 集群搭建 开启两个虚拟机 分别在两个虚拟机上开启3个Redis实例 3主3从两个虚拟机里的实例互为主备 下面分别在两个虚拟机上安装,网络设置参照codis集群的前两个主机 分别关闭 ...
- CentOS6.4上搭建hadoop-2.4.0集群
公司Commerce Cloud平台上提供申请主机的服务.昨天试了下,申请了3台机器,搭了个hadoop环境.以下是机器的一些配置: emi-centos-6.4-x86_64medium | 6GB ...
- hadoop 2.2.0 集群部署 坑
注意fs.defaultFS为2..0新的变量,代替旧的:fs.default.name hadoop 2.2.0 集群启动命令:bin/hdfs namenode -formatsbin/start ...
- 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 ...
- Ubuntu 12.04下spark1.0.0 集群搭建(原创)
spark1.0.0新版本的于2014-05-30正式发布啦,新的spark版本带来了很多新的特性,提供了更好的API支持,spark1.0.0增加了Spark SQL组件,增强了标准库(ML.str ...
随机推荐
- redis在Web中的使用
redis是一个键值对数据库,用于缓存数据. redis是一个key-value存储系统.和Memcached数据库类似,它支持存储的value类型相对更多,包括string(字符串).list(链表 ...
- C++ 基类指针,子类指针,多态
基类指针和子类指针之间相互赋值(1)将子类指针赋值给基类指针时,不需要进行强制类型转换,C++编译器将自动进行类型转换.因为子类对象也是一个基类对象. (2)将基类指针赋值给子类指针时,需要进行强制类 ...
- leetcode 27 Romove element
描述: 删除指定元素.不是真的删除,要求把不符合的元素前移. 解决: 非常简单. int removeElement(vector<int>& nums, int val) { ) ...
- IIS记录
IIS中SSL配置.导入:http://www.cnblogs.com/whitewolf/archive/2010/07/07/1773066.html
- ubuntu 12.04安装jdk 8
转载:http://www.itnose.net/detail/6196130.html Ubuntu12.4安装jdk1.8 1.要安装的jdk,我把它拷在了共享文件夹里面. (用优盘拷也可以 ...
- intval()
1.将字符串转换成整数 2.取数字的整数部分
- HBase 强制删除表
业务系统中有一张表drop不掉了. 可以disable,就是drop不掉. 解决办法: 1.将HDFS上的数据删除或移动 hadoop fs -mv /hbase/<table_name> ...
- C程序设计语言(2)文摘
第一章 导言 1.1 入门 1.2 变量与算术表达式 1.3 for语句 1.4 符号常量 1.5 字符输入输出 #include "stdafx.h" main(int argc ...
- net 程序员面试宝典
第1部分 求职过程 ------------------------------------------------------------------------------------------ ...
- 【转】Defunct进程 僵尸进程
在测试基于 DirectFB+Gstreamer 的视频联播系统的一个 Demo 的时候,其中大量使用 system 调用的语句,例如在 menu 代码中的 system("./play&q ...