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 ...
随机推荐
- k8s gpu 资源设置
将所有相同型号显卡的node打上 相同的label kubectl label node ogs-gpu02 gpu_type=k20m 启动device plugin 和app 时: nodeSel ...
- for 续5
-------siwuxie095 (五)usebackq 主要用于路径或文件名有空格时的情况 (说白了,就是对 in 后面的括号内集合进行转义) 单靠看帮助文 ...
- Get The Client Info From PHP SERVER Arrary
Get The Client Info From PHP SERVER Arrary <?php date_default_timezone_set( "Asiz/Shanghai&q ...
- Java 连接 Hive的样例程序及解析
以后编程基于这个样例可节省查阅API的时间. private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriv ...
- code1135 选择客栈
首先,预处理三个数组. pre[x]表示在此之前颜色为x的客栈有多少个. f[x]表示在此之前的客栈中,某个点c,c的颜色为x,并且从c点到已经读入的点之间有费用小于p的客栈,这样的c点的个数 las ...
- Android ListView的一个坑,你可掉进去过?
需要的功能很简单,就是一个带checkbox的列表,提交时需要知道用户选择了那些项目,如下图: 使用SimpleAdapter作为数据适配器,重写SimpleAdapter.ViewBinder的方法 ...
- pycharm控制台出现python编译器的编辑功能
一.最近研究了下python,然后昨天发现新建项目后,出现如图的输入状况(Ctrl+Alt+F10) 二 二.更改方式 (1)点开如图位置,进入编辑模式 (2)将如图位置的√去掉就好了
- linux计划任务(二)
计划任务的授权 1.at任务 /etc/at.allow /etc/at.deny 2.crontab任务 /etc/cron.allow /etc/cron.deny [注:如果allow文件存在, ...
- 常见gcc编译问题解决方法集
除非明确说明,本文内容仅针对x86/x86_64的Linux开发环境,有朋友说baidu不到,开个贴记录一下(加粗字体是关键词):用"-Wl,-Bstatic"指定链接静态库,使用 ...
- 用 Servlet 进行上载的原理和实现
Servlet 是用 Java 编写的.协议和平台都独立的服务器端组件,使用请求/响应的模式,提供了一个基于 Java 的服务器解决方案.使用 Servlet 可以方便地处理在 HTML 页面表单中提 ...