java redis3.0_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 0 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 node192.168.77.136:9001: OK

Connecting to node192.168.77.136:9002: OK

Connecting to node192.168.77.136:9003: OK>>> Performing hash slots allocation on 3nodes...

Using3masters:192.168.77.136:9001

192.168.77.136:9002

192.168.77.136:9003M: b32e955c04b37d4170860edf8ab1da0275811fe3192.168.77.136:9001slots:0-5460 (5461slots) master

M: b4d0df0bec6740cf5680d14637aaa1f6f6283adb192.168.77.136:9002slots:5461-10922 (5462slots) master

M: 5a834200f28caad158ef1fd5fe4ff4ea4b00622b192.168.77.136:9003slots:10923-16383 (5461slots) master

Can I set the above configuration? (type 'yes' to accept):

输入yes

>>>Nodes configuration updated>>>Assign a different config epoch to each node3605:M 08 Aug 20:24:53.112 # configEpoch set to 1 via CLUSTER SET-CONFIG-EPOCH3608:M 08 Aug 20:24:53.112 # configEpoch set to 2 via CLUSTER SET-CONFIG-EPOCH3612:M 08 Aug 20:24:53.113 # configEpoch set to 3 via CLUSTER SET-CONFIG-EPOCH>>> Sending CLUSTER MEET messages to jointhe cluster3605:M 08 Aug 20:24:53.183 # IP address for this node updated to 192.168.77.136

3608:M 08 Aug 20:24:53.284 # IP address for this node updated to 192.168.77.136

3612:M 08 Aug 20:24:53.285 # IP address for this node updated to 192.168.77.136Waitingfor the cluster to join..>>> Performing Cluster Check (using node 192.168.77.136:9001)

M: b32e955c04b37d4170860edf8ab1da0275811fe3192.168.77.136:9001slots:0-5460 (5461slots) master

M: b4d0df0bec6740cf5680d14637aaa1f6f6283adb192.168.77.136:9002slots:5461-10922 (5462slots) master

M: 5a834200f28caad158ef1fd5fe4ff4ea4b00622b192.168.77.136:9003slots:10923-16383 (5461slots) master

[OK] All nodes agree about slots configuration.>>> Check foropen slots...>>>Check slots coverage...

[OK] All16384slots covered.

[root@Slave1 cluster]#3605:M 08 Aug 20:24:58.025# Cluster state changed: ok3612:M 08 Aug 20:24:58.125# Cluster state changed: ok3608:M 08 Aug 20:24:58.125 # Cluster state changed: ok

5、登陆集群

# redis-cli -c -p 9001

5.1 查看集群运行情况 cluster info

127.0.0.1:9001> cluster infocluster_state:ok

cluster_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

5.2 查看集群节点情况 cluster nodes

127.0.0.1:9001>cluster nodes

b32e955c04b37d4170860edf8ab1da0275811fe3192.168.77.136:9001 myself,master - 0 0 1 connected 0-54605a834200f28caad158ef1fd5fe4ff4ea4b00622b192.168.77.136:9003 master - 0 1439094158089 3 connected 10923-16383b4d0df0bec6740cf5680d14637aaa1f6f6283adb192.168.77.136:9002 master - 0 1439094157080 2 connected 5461-10922

5.3 简单验证

127.0.0.1:9001>set a abc-> Redirected to slot [15495] located at 192.168.77.136:9003OK192.168.77.136:9003>get a"abc"

6 java程序连接集群

importjava.util.HashSet;importjava.util.Set;importredis.clients.jedis.HostAndPort;importredis.clients.jedis.JedisCluster;public classTestRedisCluster {public static voidmain(String[] args) {

Set jedisClusterNodes = new HashSet();

jedisClusterNodes.add(new HostAndPort("192.168.77.136", 9001));

// 使用redis集群中的任一节点即可

JedisCluster jedis= newJedisCluster(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值