您的位置:首页 > 房产 > 家装 > 信息港发布信息_天元建设集团有限公司简介_百度收录批量查询_国内新闻最新消息简短

信息港发布信息_天元建设集团有限公司简介_百度收录批量查询_国内新闻最新消息简短

2024/12/23 15:49:56 来源:https://blog.csdn.net/m0_59344541/article/details/141529587  浏览:    关键词:信息港发布信息_天元建设集团有限公司简介_百度收录批量查询_国内新闻最新消息简短
信息港发布信息_天元建设集团有限公司简介_百度收录批量查询_国内新闻最新消息简短

一、Redis基础知识

1、概念

Redis是一个开源的、遵循BSD协议的、基于内存的而且目前比较流行的键值数据库(key-value database),是一个非关系型数据库,redis 提供将内存通过网络远程共享的一种服务,提供类似功能的 还有memcached,但相比memcached,redis还提供了易扩展、高性能、具备数据持久性等功能。 Redis 在高并发、低延迟环境要求比较高的环境使用量非常广泛。

2、特点

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

二、Redis源码安装

解压源码包

tar zxf redis-7.4.0.tar.gz

执行编译命令

dnf install initscripts make gcc -y
cd redis-7.4.0/
make && make install

报错提示系统使用的是systemd的初始化方式,解决报错

vim install_server.sh

启动Redis

./install_server.sh

三、配置主从同步

1、主从同步过程

1.1、slave节点发送同步请求到master节点

1.2、slave节点通过master节点的认证开始进行同步

1.3、master节点会开启bgsave进程发送内存rbd到slave节点,在此过程中是异步操作,也就是说 master节点仍然可以进行写入动作

1.4、slave节点收到rdb后首先清空自己的所有数据

1.5、slave节点加载rdb并进行数据恢复

1.6、在master和slave同步过程中master还会开启新的bgsave进程把没有同步的数据进行缓存

1.7、通过自有的replactionfeedslave函数把未通过内存快照发动到slave的数据一条一条写入到 slave中

2、配置master节点

vim /etc/redis/6379.conf

/etc/init.d/redis_6379 restart

复制到其他两台主机

scp -r redis-7.4.0 root@172.25.254.20:/root
scp -r redis-7.4.0 root@172.25.254.30:/root

rsync -al * root@172.25.254.20:/usr/local/bin
rsync -al * root@172.25.254.30:/usr/local/bin

3、配置slave节点

yum install initscripts -y
vim /etc/redis/6379.conf

/etc/init.d/redis_6379 restart

测试:

在mastser节点新建

在slave节点查看

四、Redis的哨兵(高可用)

编辑配置文件

cd redis-7.4.0/
cp sentinel.conf /etc/redis/
vim /etc/redis/sentinel.conf

scp /etc/redis/sentinel.conf root@172.25.254.20:/etc/redis/
scp /etc/redis/sentinel.conf root@172.25.254.30:/etc/redis/

启动服务

redis-sentinel /etc/redis/sentinel.conf

再开一个master节点终端

[root@redis-node1 ~]# redis-cli
127.0.0.1:6379> shutdown

在salve查看

[root@redis-node2 ~]# redis-cli
127.0.0.1:6379> info replications
127.0.0.1:6379> info replication

五、Redis Cluster(无中心化设计)

1、Redis Cluster 工作原理

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

2、部署redis cluster

删除源码编译的redis

cd redis-7.4.0/
make uninstall

创建3台cluster

6台redis同时安装

dnf install redis -y
vim /etc/redis/redis.conf

集群主从认证

复制配置文件给其他主机

for i in 20 30 110 120 130; do scp /etc/redis/redis.conf root@172.25.254.$i:/etc/redis/redis.conf; done
systemctl enable --now redis

3、创建redis-cluster

redis-cli --cluster create -a 123456 172.25.254.10:6379 172.25.254.20:6379 172.25.254.30:6379 172.25.254.110:6379 172.25.254.120:6379 172.25.254.130:6379 --cluster-replicas 1

查看集群状态

redis-cli -a 123456 --cluster info 172.25.254.10:6379

redis-cli -a 123456 cluster info

写入数据

redis-cli -a 123456
127.0.0.1:6379> set name hao

报错提示可知被分配到20的hash槽位上

4、集群扩容

scp /etc/redis/redis.conf root@172.25.254.50:/etc/redis/redis.conf
scp /etc/redis/redis.conf root@172.25.254.150:/etc/redis/redis.conf
redis-cli -a 123456 --cluster add-node 172.25.254.50:6379 172.25.254.10:6379

redis-cli -a 123456 --cluster check 172.25.254.10:6379

但这时的50没有槽位,不可以存数据

分配槽位

redis-cli -a 123456 --cluster reshard 172.25.254.10:6379

添加salve

redis-cli -a 123456 --cluster add-node 172.25.254.150:6379 172.25.254.10:6379 --cluster-slave --cluster-master-id d80777be39c2f55697310daf69bdc0b6f47eb2f9

5、clsuter集群维护

添加节点的时候是先添加node节点到集群,然后分配槽位,删除节点的操作与添加节点的操作正好相 反,是先将被删除的Redis node上的槽位迁移到集群中的其他Redis node节点上,然后再将其删除,如 果一个Redis node节点上的槽位没有被完全迁移,删除该node的时候会提示有数据且无法删除。

移除要下线主机50的哈希槽位

redis-cli -a 123456 --cluster reshard 172.25.254.10:6379

删除master

redis-cli -a 123456 --cluster del-node 172.25.254.150:6379  1c2bdbf84e07f3abf080e8106d6eb84ce3734bcd
redis-cli -a 123456 --cluster del-node 172.25.254.50:6379 d80777be39c2f55697310daf69bdc0b6f47eb2f9

redis-cli -a 123456 --cluster check 172.25.254.10:6379

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com