Redis集群搭建以及操作

Redis集群搭建以及操作

Redis集群

Redis可以分布式存储,集群
Redis最少需要三个节点,三个节点还需要备份
每个节点的地位都是平等的,每个都有连接
Redis 3.0以上做集群
通过hash slot(槽点)来分配,有16384个槽点(0-16384),平均分配到每个节点上,只有有槽点才能够存储数据,主节点处于工作的状态(槽点),从节点上面没有槽点,当主节点宕机,主节点会把槽点迁移从节点,然后从节点就变成主节点,继续集群的正常运行。

将数据进行crc16的算法,crc16(key)/16384=1545

数据是跟着槽点来走的。

搭建


[root@localhost ~]# tar -zxf redis-4.0.6.tar.gz -C /usr/src
[root@localhost ~]# mv /usr/src/redis-4.0.6/ /usr/local/redis
[root@localhost ~]# cd /usr/local/redis/
[root@localhost redis]# yum -y install gcc* make cmake
[root@localhost redis]# make && make install
[root@localhost redis]# vi redis.conf

在这里插入图片描述
在这里插入图片描述
创建集群文件

[root@localhost redis]# mkdir redis_cluster
[root@localhost redis]# cd redis_cluster/
[root@localhost redis_cluster]# mkdir {7000..7005}
[root@localhost redis_cluster]# ls
7000  7001  7002  7003  7004  7005
[root@localhost redis_cluster]# cp /usr/local/redis/redis.conf 7000/
[root@localhost redis_cluster]# vi 7000/redis.conf

配置文件内的#作为注释 不建议与配置同行 可以换行添加
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@localhost redis_cluster]# cd 7000/
[root@localhost 7000]# cp redis.conf ../7001
[root@localhost 7000]# cp redis.conf ../7002
[root@localhost 7000]# cp redis.conf ../7003
[root@localhost 7000]# cp redis.conf ../7004
[root@localhost 7000]# cp redis.conf ../7005
[root@localhost 7000]# sed -i "s/7000/7001/g" ../7001/redis.conf 
[root@localhost 7000]# sed -i "s/7000/7002/g" ../7002/redis.conf 
[root@localhost 7000]# sed -i "s/7000/7003/g" ../7003/redis.conf 
[root@localhost 7000]# sed -i "s/7000/7004/g" ../7004/redis.conf 
[root@localhost 7000]# sed -i "s/7000/7005/g" ../7005/redis.conf
[root@localhost 7000]# cat ../7001/redis.conf | grep 7001
port 7001
appendfilename "appendonly-7001.aof"   #aof持久化生成的文件
cluster-config-file nodes-7001.conf  #集群节点的配置文件
[root@localhost 7000]# cat ../7002/redis.conf | grep 7002
port 7002
appendfilename "appendonly-7002.aof"   #aof持久化生成的文件
cluster-config-file nodes-7002.conf  #集群节点的配置文件
[root@localhost 7000]# cat ../7003/redis.conf | grep 7003
port 7003
appendfilename "appendonly-7003.aof"   #aof持久化生成的文件
cluster-config-file nodes-7003.conf  #集群节点的配置文件
[root@localhost 7000]# cat ../7004/redis.conf | grep 7004
port 7004
appendfilename "appendonly-7004.aof"   #aof持久化生成的文件
cluster-config-file nodes-7004.conf  #集群节点的配置文件
[root@localhost 7000]# cat ../7005/redis.conf | grep 7005
port 7005
appendfilename "appendonly-7005.aof"   #aof持久化生成的文件
cluster-config-file nodes-7005.conf  #集群节点的配置文件

启动

[root@localhost redis_cluster]# redis-server 7000/redis.conf
[root@localhost redis_cluster]# redis-server 7001/redis.conf
[root@localhost redis_cluster]# redis-server 7002/redis.conf
[root@localhost redis_cluster]# redis-server 7003/redis.conf
[root@localhost redis_cluster]# redis-server 7004/redis.conf
[root@localhost redis_cluster]# redis-server 7005/redis.conf

在这里插入图片描述

[root@localhost redis_cluster]# ln -s /usr/local/redis/src/redis-trib.rb /usr/bin/
[root@localhost redis_cluster]# yum -y install ruby
[root@localhost ~]# ls
anaconda-ks.cfg  redis-3.3.0.gem  redis-4.0.6.tar.gz
[root@localhost ~]# gem install redis-3.3.0.gem 
Successfully installed redis-3.3.0
Parsing documentation for redis-3.3.0
Installing ri documentation for redis-3.3.0
1 gem installed

创建集群

[root@localhost ~]# redis-trib.rb create --replicas 1 192.168.1.80:7000 192.168.1.80:7001 192.168.1.80:7002 192.168.1.80:7003 192.168.1.80:7004 192.168.1.80:7005
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.1.80:7000
192.168.1.80:7001
192.168.1.80:7002
Adding replica 192.168.1.80:7003 to 192.168.1.80:7000
Adding replica 192.168.1.80:7004 to 192.168.1.80:7001
Adding replica 192.168.1.80:7005 to 192.168.1.80:7002
M: 0346e92df4a532e42f4dbccadc754d260f474a9b 192.168.1.80:7000
   slots:0-5460 (5461 slots) master
M: 376598db2e01e17eeb36278fd3d7933ceb7e0570 192.168.1.80:7001
   slots:5461-10922 (5462 slots) master
M: e46f0a194a1393dd4f5f020683b093c54d3cbd56 192.168.1.80:7002
   slots:10923-16383 (5461 slots) master
S: 711093acffe39f4f1495e1abf8209f9c0f6ef33e 192.168.1.80:7003
   replicates 0346e92df4a532e42f4dbccadc754d260f474a9b
S: 79bf2c6bf3c95d886a451dc46c3095c1b199ac16 192.168.1.80:7004
   replicates 376598db2e01e17eeb36278fd3d7933ceb7e0570
S: 4c958bc1b24c7594d22587f5440a604445ea32c5 192.168.1.80:7005
   replicates e46f0a194a1393dd4f5f020683b093c54d3cbd56
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...
>>> Performing Cluster Check (using node 192.168.1.80:7000)
M: 0346e92df4a532e42f4dbccadc754d260f474a9b 192.168.1.80:7000
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
M: e46f0a194a1393dd4f5f020683b093c54d3cbd56 192.168.1.80:7002
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
M: 376598db2e01e17eeb36278fd3d7933ceb7e0570 192.168.1.80:7001
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
S: 711093acffe39f4f1495e1abf8209f9c0f6ef33e 192.168.1.80:7003
   slots: (0 slots) slave
   replicates 0346e92df4a532e42f4dbccadc754d260f474a9b
S: 79bf2c6bf3c95d886a451dc46c3095c1b199ac16 192.168.1.80:7004
   slots: (0 slots) slave
   replicates 376598db2e01e17eeb36278fd3d7933ceb7e0570
S: 4c958bc1b24c7594d22587f5440a604445ea32c5 192.168.1.80:7005
   slots: (0 slots) slave
   replicates e46f0a194a1393dd4f5f020683b093c54d3cbd56
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

Redis-trib.rb 命令字 选项参数
Create 创建集群
选项
–replicas 给主节点指定从节点的个数
Redshard 槽点重分配
Check 检查集群
Info集群信息
Add-node 添加节点,默认为主节点
Add-node的选项 –slave 添加从节点
Del-node 删除节点,如果需要删除的主节点,需要将主节点的槽点提前释放,然后进行槽点从分配

检测集群
在这里插入图片描述
尝试存储
在这里插入图片描述
添加节点
1 添加从节点

[root@localhost ~]# cd /usr/local/redis/redis_cluster/
[root@localhost redis_cluster]# mkdir 7006
[root@localhost redis_cluster]# cp 7000/redis.conf 7006/
[root@localhost redis_cluster]# sed -i "s/7000/7006/g" 7006/redis.conf 
[root@localhost redis_cluster]# redis-server 7006/redis.conf

在这里插入图片描述

[root@localhost redis_cluster]# redis-trib.rb add-node --slave --master-id 0346e92df4a532e42f4dbccadc754d260f474a9b 192.168.1.80:7006 192.168.1.80:7000

在这里插入图片描述
2 添加主节点

[root@localhost redis_cluster]# mkdir 7007
[root@localhost redis_cluster]# cp 7000/redis.conf 7007/
[root@localhost redis_cluster]# sed -i "s/7000/7007/g" 7007/redis.conf 
[root@localhost redis_cluster]# redis-server 7007/redis.conf 
[root@localhost redis_cluster]# redis-trib.rb add-node 192.168.1.80:7007 192.168.1.80:7000

在这里插入图片描述
槽点重分配

[root@localhost redis_cluster]# redis-trib.rb reshard 192.168.1.80:7000

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
3 删除节点

[root@localhost ~]# redis-trib.rb del-node 192.168.1.80:7000 4c958bc1b24c7594d22587f5440a604445ea32c5
>>> Removing node 4c958bc1b24c7594d22587f5440a604445ea32c5 from cluster 192.168.1.80:7000
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.

在这里插入图片描述

Redis,是开源的key-value缓存框架,由c语言编写,数据完全存储在内存空间中,支持数据持久性,支持数据持久性,支持master-slave模式的数据备份。

Mysql和redis的区别:mysql是持久数据化存储,存储在磁盘当中,会涉及到一些io。存储速度会较慢。Redis存储数据在内存当中,大幅度的提高了大数量的web访问速度。
Mysql+redis就是一个内存+磁盘关系的映射,redis存储在内存中,mysql存储在磁盘中,这样的话,web每次访问redis如果没有数据就再去mysql读取数据,大大的提高了运行速度。

Php默认从redis索取缓存数据,只有redis过期或删除,php才会从数据库索求数据。

Redis的所有数据是保存在内存中,两种同步方式
半持久化模式:RDB(全量同步)
RDB是redis默认同步方式
不定期的通过异步方式保存到磁盘上,快照最终结果。
在恢复最大数据集时的速度比AOF的恢复速度要快。
全持久化模式:(增量同步)
把每一次数据变化都写入到一个aof里面
没有rdb同步的快,但采用了高并发机制,对系统内存要求高。

只保证最终数据一致性,使用于微博粉丝,秒杀,抢红包等场景,

Redistribution

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101773.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 直流电压前馈控制数字逆变电源设计与实现

    直流电压前馈控制数字逆变电源设计与实现引言逆变电源一般采用瞬时反馈控制技术来提高逆变电源的动态响应速度,减少输出电压的谐波含量,改善输出电压波形的质量。常见的逆变电源控制技术,有重复控制、谐波补偿控制、无差拍控制、电压瞬时值控制和带电流内环的电压瞬时值控制等类型[1~4]。其中,带电流内环电压瞬时值环路的双环控制方法因实现简单,系统动态性能优越和对负载的适应性强等优点,而逐渐成为高性能逆变电源的发展方向之一[4]。但传统控制方法是基于逆变电源直流侧输入电压为无脉动直流电压的假定,而实际逆变电源,存在因电网电压波动或负载突变而导致直流侧电压波

    2022年6月11日
    32
  • jboss安装与配置_andrax安装出错

    jboss安装与配置_andrax安装出错一.              下载与安装JBoss在本文中,我们下载的JBoss版本为:4.2.1.GA。下载地址:http://www.jboss.org/jbossas/downloads/在如上的下载页中下载JBoss-4.2.1.GA.zip文件。下载完成后,将其解压缩后即可完成安装,解压缩后将其放置到一个不带空格的目录(若目录带有空格,例如:C:

    2022年10月3日
    0
  • 基于matlab的振动模态分析_matlab动力学分析

    基于matlab的振动模态分析_matlab动力学分析2018年第1期时代农机TIMESAGRICULTURALMACHINERY第45卷第1期Vol.45No.12018年1月Jan.2018作者简介:刘鸿智(1988-),男,辽宁沈阳人,硕士研究生,助教,主要研究方向:机械设计及理论、机械制造。基于MATLAB的机械振动分析研究刘鸿智渊鹤壁职业技术学院袁河南鹤壁4580…

    2022年10月15日
    0
  • DatabaseMetaData的简单使用

    DatabaseMetaData的简单使用在看大佬写的一个导出数据库建标脚本的接口的时候,发现频频用到DataBaseMetaData这个类,之前也没有用过这个类下的API,记录一下心得用法。DatabaseMetaData是java.sql包中的接口,利用它可以获取我们连接到的数据库的结构、存储等很多信息;先上个API文档:这英文看的是心力憔悴,直接来看这个接口…

    2022年6月19日
    22
  • ubuntu安装进入EFI Shell「建议收藏」

    ubuntu安装进入EFI Shell「建议收藏」背景:用VirtualBox安装Ubuntu14:第一次,无法进入LiveCD界面.第二次,勾选EFI界面后成功进入安装流程,成功安装。但是安装完成之后重启,进入了EFIShell界面,如下:解决方案:输入:fs:0cdEFI/ubuntugrubx64.efi引自ServerFault:IfyouaregettingtotheEFIshellyou

    2022年7月24日
    16
  • mt4下载正版官网下载(如何分辨真假MT4软件)

    mt4下载正版官网下载(如何分辨真假MT4软件)在全球零售外汇行业,外汇经纪商使用最多的还是俄罗斯迈达克公司的MT4交易平台,一些不合规的外汇经纪商也对MT4十分热衷,这使市场上几千块一个的盗版MT4日益猖獗,致使一部分交易者因此遭受一些不必要的利益侵害。那么MT4。fOrex6。cc的特点是什么?如何判别一个MT4软件是否是盗版?今天就带你们辨别真假MT4.MT4的优势1.强大的工作表现MT4强大的工作表现,这一点是毋庸置疑的。MT4自2005年7月1日推出以来,就不断的获得市场的认可。下单灵活、界面友好、交易直观等这些都是MT4平台成为外汇市场

    2022年8月15日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号