铁佛 发表于 2024-9-2 21:37:20

Nosql数据库Redis集群

一、Nosql

1.1、概念

首先数据库分为两种,即关系型数据库和非关系型数据库(也就是Nosql)。
NoSQL数据库,即非关系型数据库,提供了一种不同于传统关系型数据库的数据存储与管理方式。其特点包括灵活的数据模子、高可扩展性、高性能以及适用于大数据处理等。这些特性使NoSQL数据库在当代应用程序中越来越受欢迎,特殊是在需要处理大规模、半结构化或非结构化数据的场景中。
1.2、分类

主要分为临时性键 值存储(memcached、Redis)、永世性键值存储(ROMA、Redis)、面向文档的数据库 (MongoDB、CouchDB)、面向列的数据库(Cassandra、HBase)。
二、redis

2.1、概念

Redis(Remote Dictionary Server)是一个开源的内存数据库,使用ANSI C编写,遵守BSD协议。它主要用作键值存储体系、缓存、消息队列和会话存储等。
2.2、特性



[*]速度快: 10W QPS,基于内存,C语言实现
[*]单线程
[*]持久化
[*]支持多种数据结构
[*]支持多种编程语言
[*]功能丰富: 支持Lua脚本,发布订阅,事务,pipeline等功能
[*]简朴: 代码短小干练(单机核心代码只有23000行左右),单线程开辟容易,不依靠外部库,使用简朴
[*]主从复制
[*]支持高可用和分布式
 2.2.1、单线程优势



[*]纯内存
[*]非壅闭
[*]避免线程切换和竞态斲丧
2.3、搭建

 官方下载所在:Index of /releases/
2.3.1、编译搭建

首先摆设三台主机
在node1中解压并安装编译包
https://i-blog.csdnimg.cn/direct/e728471512d04ef18c1819c413d5921c.png
dnf install make gcc initscripts-10.11.6 1.el9.x86_64 -y
实行编译
接着make && make install
启动redis
https://i-blog.csdnimg.cn/direct/0ef6fb1dd2cb47ef97fb601eb920706e.png
然后会报错,接着前往 vim install_server.sh
对应位置注释掉
https://i-blog.csdnimg.cn/direct/b620cf9f063a43c6a492409c44ebaeb8.png
可以/system慢慢找,接着再次实行,一起enter
接着启动
https://i-blog.csdnimg.cn/direct/2672aea46acb403989e667921093c6ef.png
2.3.2、配置redis

vim /etc/redis/6379.conf
防止找不到路径
https://i-blog.csdnimg.cn/direct/385d357a4f544c869423197ef7185e49.png
/etc/init.d/redis_6379 restart 重启服务
接着端口查看
https://i-blog.csdnimg.cn/direct/c3a61645c2bf4120aa47bad1ccfda0ac.png
2.4、主从复制

2.4.1、环境

ip和nat网卡
在三台主机中vim /etc/redis/6379.conf
https://i-blog.csdnimg.cn/direct/f257d97a079c41f39fcdd1f0e8e8cd0b.png
在node2,3中
https://i-blog.csdnimg.cn/direct/340857815cd9455fa37c99e3c13aa6db.png
2.4.2、测试

在主节点中node1中
https://i-blog.csdnimg.cn/direct/f1d53477a1ce425c96734107a8002725.png
在slave中node2,3
https://i-blog.csdnimg.cn/direct/7d2d61d80dda4632af4c86ab620e8ccd.png
2.5、哨兵(redis高可用)

2.5.1、概念

哨兵通过监控主从节点的运行状态,并在主节点故障时主动举行故障转移,确保服务的连续性和稳定性的一种机制。这种机制是一种分布式体系,用于对主从结构中的每台服务器举行监控。当主节点出现故障时,哨兵会主动选择一个从节点提升为主节点,并关照其他从节点和客户端更新配置。在上述的主从复制的步骤上大大优化,不需要人工干预。
2.5.2、实验过程

2.5.2.1、master节点

首先在master节点也就是node1上
https://i-blog.csdnimg.cn/direct/696bd6d4c1744ee5bb8736b54db2fc96.png
更改以下设置(相隔太远就不拍了)
pidfile /var/run/redis-sentinel.pid
sentinel monitor mymaster 172.25.254.10 6379 2
sentinel down-after-milliseconds mymaster 10000
将文件复制到别的两台主机上
https://i-blog.csdnimg.cn/direct/be0cd4b0e89f4d4eae182dace6df867f.png
redis-sentinel /etc/redis/sentinel.conf 启动
https://i-blog.csdnimg.cn/direct/0886a167f46e43898af2e8ddc0529ccf.png
2.5.2.2、测试

再开一台master节点的主机
https://i-blog.csdnimg.cn/direct/6961aaf17be644e297c41d64753565a0.png
https://i-blog.csdnimg.cn/direct/128c162bea4b4f149792e6ea0271bcf5.png
2.6、Redis cluster

2.6.1、概念

在哨兵sentinel机制中,可以解决redis高可用问题,即当master故障后可以主动将slave提升为master, 从而可以保证redis服务的正常使用,但是无法解决redis单机写入的瓶颈问题,即单机redis写入性能受 限于单机的内存巨细、并发数目、网卡速率等因素。redis 3.0版本之后推出了无中心架构的redis cluster机制,在无中心的redis集群当中,其每个节点保存 当前节点数据和整个集群状态,每个节点都和其他全部节点毗连。
2.6.2、实验过程

2.6.2.1、安装

为了方便就不源码编译了,直接yum
在原本三台主机的底子上再次摆设三台主机(这里用的假如是mobashell可开启多实行模式,xshell还没搞清)
IP分别设置为172.25.254.110/120/130
为了配置统一,先将前三台node1,2,3的redis代码配置删掉
https://i-blog.csdnimg.cn/direct/426cebecb9634a5e9708cade1b800778.png
之后全部举行
Yum install redis -y
yum安装编译后修改配置文件
2.6.2.2、更改参数

在node1中
vim /etc/redis/redis.conf
https://i-blog.csdnimg.cn/direct/ce7f557e64f54c8f86262cd2209df29e.pnghttps://i-blog.csdnimg.cn/direct/e4ea1a060f4b4e519bc475bd0e49a658.png
https://i-blog.csdnimg.cn/direct/6dfc95f2797f43039dff9208abd2889f.pnghttps://i-blog.csdnimg.cn/direct/cf5c4780bc6a4523b0a8d543d82ed4fb.pnghttps://i-blog.csdnimg.cn/direct/a082486170f34317962b3b97e54b5b5e.png
检测发现6379已经打开了
https://i-blog.csdnimg.cn/direct/1ad5c8a5a0494ad19d7b496fec74e946.png
https://i-blog.csdnimg.cn/direct/7a278c3f5a77453db649b0233e4a1c57.png
将配置文件发往其他主机
https://i-blog.csdnimg.cn/direct/fa41cfd162644c839295c4b5083acdec.png
https://i-blog.csdnimg.cn/direct/9d6f24e7891446349c00249f25592673.png
成功后,在其他主机实行systemctl enable --now redis
https://i-blog.csdnimg.cn/direct/870f8ab885e741edb6c2f9edd2e76869.png
2.6.3、创建redis cluster

接着在node1中创建集群
https://i-blog.csdnimg.cn/direct/5e4b496a05724e26a9a76a6cc6d77fcc.png
接着扣问你是否举行配置选择yes
https://i-blog.csdnimg.cn/direct/f61640c681054b549b10211d8d676b27.png
举行检测
https://i-blog.csdnimg.cn/direct/acd0ac6eca8746d98d44e5a30cd879b1.png
这里提示5798高出了node1的范围,上图显示是0-5461
https://i-blog.csdnimg.cn/direct/b24ce6f760c34c258fdf6745da6b69c2.png
以是得去node2中写
Node1,2,3是一个哈希层,数据分别存储到它们三台master主机中,而slave的作用是master或者说哈希层出现问题后,才会把数据存储到slave节点中。
2.6.4、集群扩容

再开两台主机
IP分别设置为172.25.254.50/150
首先下载redis包
Yum install redis -y
同时再把前面的几台主机的配置文件复制已往
https://i-blog.csdnimg.cn/direct/c985363795a843be8bdc8afc1a9526f4.png
然后再在新建两台主机打开redis服务
Systemctl start redis
通过以下命令举行添加master
redis-cli -a 123456 --cluster add-node 172.25.254.50:6379 172.25.254.20:6379
https://i-blog.csdnimg.cn/direct/acb07011ea514037bd13c1327444a26e.png
这里可以看到添加成功
https://i-blog.csdnimg.cn/direct/fdfdd1f188a146a3b895296ec31e7392.png
接偏重新分享槽位
https://i-blog.csdnimg.cn/direct/0be582fdf8574075822cf982dff8f6fc.png
这里16384分享给四个槽位以是/4
https://i-blog.csdnimg.cn/direct/a5334a5980d94f4d9bec234801712290.png
因为50没有,以是是50的id,id在check检测那一步可以看,然后选择全部人给他分配
每人都匀一点给他
https://i-blog.csdnimg.cn/direct/3546e16f4c5b4c3aa18646c3c5fa52da.png
接着会问你是否分配,yes就可以了
redis-cli -a 123456 --cluster check 172.25.254.10:6379
这里检测可以看到已经有槽位了
https://i-blog.csdnimg.cn/direct/10b0ea049a6745a7874394d2199e2c16.png
接着添加slava150
redis-cli -a 123456 --cluster add-node 172.25.254.150:6379 172.25.254.20:6379 --cluster-slave --cluster-master-id ef434540246ffaef763e4275756c062b7a387993
接着检测redis-cli -a 123456 --cluster check 172.25.254.20:6379 可以看到已经添加进去了,同时150酿成了50的slave
https://i-blog.csdnimg.cn/direct/7d3f9f00dc104664babacc23995fb369.png
2.6.5、如何删除节点

2.6.5.1、首先删除slave

redis-cli -a 123456 --cluster del-node 172.25.254.150:6379 54a1810c38c8ddf0bf677d37b682ac645a9c922b 反面跟得是id
https://i-blog.csdnimg.cn/direct/4c26951ab4da486db4729db6b3769179.png
检测:可以看到已经没有150了
https://i-blog.csdnimg.cn/direct/d92c9efb47424334ba14fa691d8e60bb.png
2.6.5.2、删除master

因为分配过槽位,有数据,不能直接删除,得先扫除数据。
重新分配槽位
redis-cli -a 123456 --cluster reshard 172.25.254.20:6379
将50的分配给130
https://i-blog.csdnimg.cn/direct/42c8efa45a7343ff8d7da00598f91473.png
这里可以看到50上没有数据,以是可以举行删除
https://i-blog.csdnimg.cn/direct/7ac2c1c11bf14e85baa24ce24cfde492.png
https://i-blog.csdnimg.cn/direct/0241c29cfff44c8f923ab6e0c6e185e1.png


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Nosql数据库Redis集群