八、Redis集群
1、Redis集群概述
2、Redis集群搭建
-
使用六个端口分别开启redis服务器,模拟六台服务器
-
1、将原来保存的rdb或aof文件全部删掉 命令: [root@localhost myredis]# rm -rf *.rdb
-
2、制作6个实例:6379 6380 6381 6389 6390 6391
-
3、启动六个服务
-
redis-server启动服务
[root@localhost myredis]# redis-server redis6379.conf [root@localhost myredis]# redis-server redis6380.conf [root@localhost myredis]# redis-server redis6381.conf [root@localhost myredis]# redis-server redis6389.conf [root@localhost myredis]# redis-server redis6390.conf [root@localhost myredis]# redis-server redis6391.conf
-
查看进程是否启动成功
[root@localhost myredis]# ps -ef | grep redis root 9726 1 0 10:31 ? 00:00:00 redis-server *:6379 [cluster] root 9732 1 0 10:31 ? 00:00:00 redis-server *:6380 [cluster] root 9738 1 0 10:32 ? 00:00:00 redis-server *:6381 [cluster] root 9752 1 0 10:32 ? 00:00:00 redis-server *:6389 [cluster] root 9758 1 0 10:32 ? 00:00:00 redis-server *:6390 [cluster] root 9764 1 0 10:32 ? 00:00:00 redis-server *:6391 [cluster] root 9779 9442 0 10:33 pts/2 00:00:00 grep --color=auto redis
-
-
4、将六个节点合成一个集群
-
1、要保证所有的redis实例启动后,node-xxx.conf文件都能正常生成
-
2、进行合成操作
-
2.1、进入到redis原始目录的src目录下,执行下列操作
redis-cli --cluster create --cluster-replicas 1 192.168.17.143:6379 192.168.17.143:6380 192.168.17.143:6381 192.168.17.143:6389 192.168.17.143:6390 192.168.17.143:6391
-
2.2、注意点:
- 此处不要使用127.0.0.1,使用真实的IP地址
- replicas 1 采用最简单的方式配置集群,一台主机,一台从机,正好三组
-
2.3、示例
[root@localhost myredis]# cd /opt/redis-6.2.1/src [root@localhost src]# redis-cli --cluster create --cluster-replicas 1 192.168.17.143:6379 192.168.17.143:6380 192.168.17.143:6381 192.168.17.143:6389 192.168.17.143:6390 192.168.17.143:6391
-
-
3、完成集群搭建
-
出现下述示例便完成了搭建
-
-
4、客户端登录集群
[root@localhost src]# redis-cli -c -p 6379
-
通过cluster nodes命令查看集群信息
-
-
3、Redis集群插槽(slots)
-
首先要了解Redis集群如何分配节点
-
什么是插槽(slot)?
4、在集群中值操作
-
在redis-cli每次录入、查询键值,redis都会计算出该key的插槽值并送往指定的插槽,如果不是当前客户端连接服务器的插槽,redis会报错,并告知应前往指定的redis实例地址和端口
-
不在slot下的键值,是不能够使用mget,mset等多键操作的
-
可以通过{}来定义组的概念,从而使key中的{}内相同内容的键值放到一个slot中去
-
查询集群中的值
5、故障恢复
- 1、如果主节点宕机(下线),从节点会自动升为主节点 :要注意上述配置文件中配置的超时时间
- 2、主节点恢复后,主从关系变化 : 主节点回来变为从机
- 3、如果某一段插槽的主节点全部宕机,redis服务时候还能继续?
6、java操作Redis集群
public class JedisTest{
public static void main(String[] args){
//创建对象,当然那也可以创建一个set集合,将端口号放进去
//new HashSet(new HostAndPort())
HostAndPort hostAndPort = new HostAndPort("192.168.17.143",6379);
//只需要连接一个端口即可,因为Redis的无中心化集群,会自动切换节点
JedisCluster jedisCluster = new JedisCluster(hostAndPort);
//数据操作
jedisCluster.set("key","value");
String value = jedisCluster.get("key");
}
}
7、Redis集群的优缺点
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。