APP下载

高效能高并发网站架构 教你搭建Redis5快取丛集

消息来源:baojiabao.com 作者: 发布时间:2024-05-10

报价宝综合消息高效能高并发网站架构 教你搭建Redis5快取丛集

一、Redis丛集介绍

Redis真的是一个优秀的技术,它是一种key-value形式的NoSQL内存数据库,由ANSI C编写,遵守BSD协议、支援网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Redis最大的特性是它会将所有资料都放在内存中,所以读写速度效能非常好。Redis是基于内存进行操作的,效能较高,可以很好的在一定程度上解决网站一瞬间的并发量,例如商品抢购秒杀等活动。

网站承受高并发访问压力的同时,还需要从海量资料中查询出满足条件的资料,需要快速响应,前端传送请求、后端和mysql数据库互动,进行sql查询操作,读写比较慢,这时候引入Redis ,把从mysql 的资料快取到Redis 中,下次读取时候效能就会提高;当然,它也支援将内存中的资料以快照和日志的形式持久化到硬盘,这样即使在断电、机器故障等异常情况发生时资料也不会丢失,Redis能从硬盘中恢复快照资料到内存中。

Redis 释出了稳定版本的 5.0 版本,放弃 Ruby的丛集方式,改用 C语言编写的 redis-cli的方式,是丛集的构建方式复杂度大大降低。Redis-Cluster丛集采用无中心结构,每个节点储存资料和整个丛集状态,每个节点都和其他所有节点连线。

为了保证资料的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供资料存取,从节点则是从主节点拉取资料备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证丛集不会挂掉。

redis-cluster投票:容错,投票过程是丛集中所有master参与,如果半数以上master节点与master节点通讯超过(cluster-node-timeout),认为当前master节点挂掉。

丛集中至少应该有奇数个节点,所以至少有三个节点,每个节点至少有一个备份节点,所以下面使用6节点(主节点、备份节点由redis-cluster丛集确定)。6个节点分布在一台机器上,采用三主三从的模式。实际应用中,最好用多台机器,比如说6个节点分布到3台机器上,redis在建立丛集时为自动的将主从节点进行不同机器的分配。

二、单机redis模式

下载源代码redis5.0并解压编译

wget http://download.redis.io/releases/redis-5.0.0.tar.gz

tar xzf redis-5.0.0.tar.gz

cd redis-5.0.0

make

redis前端启动需要改成后台启动.

修改redis.conf档案,将daemonize no -> daemonize yes

vim redis.conf

启动redis

/www/server/redis/src/redis-server /www/server/redis/redis.conf

检视redis是否在执行

ps aux|grep redis

现在是单机redis模式完成。

三、redis丛集模式:

1.建立6个Redis配置档案

cd /usr/local/

mkdir redis_cluster //建立丛集目录

cd redis_cluster

mkdir 7000 7001 7002 7003 7004 7005//分别代表6个节点

其对应埠 7000 7001 7002 70037004 7005

2.复制配置档案到各个目录

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7000/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7001/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7002/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7003/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7004/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7005/ 

3.分别修改配置档案

vim /usr/local/redis_cluster/7000/redis.conf

vim /usr/local/redis_cluster/7001/redis.conf

vim /usr/local/redis_cluster/7002/redis.conf

vim /usr/local/redis_cluster/7003/redis.conf

vim /usr/local/redis_cluster/7004/redis.conf

vim /usr/local/redis_cluster/7005/redis.conf

如下

port 7000 #埠

cluster-enabled yes #启用丛集模式

cluster-config-file nodes_7000.conf #丛集的配置 配置档案首次启动自动生成

cluster-node-timeout 5000 #超时时间 5秒

appendonly yes #aof日志开启 它会每次写操作都记录一条日志

daemonize yes #后台执行

protected-mode no #非保护模式

pidfile /var/run/redis_7000.pid

//下面可以不写

#若设定密码,master和slave需同时配置下面两个引数:

masterauth "jijiji" #连线master的密码

requirepass "jijiji" #自己的密码 

cluster-config-file,port,pidfile对应数字

4.启动节点

cd /www/server/redis/src/

./redis-server /usr/local/redis_cluster/7000/redis.conf

./redis-server /usr/local/redis_cluster/7001/redis.conf

./redis-server /usr/local/redis_cluster/7002/redis.conf

./redis-server /usr/local/redis_cluster/7003/redis.conf

./redis-server /usr/local/redis_cluster/7004/redis.conf

./redis-server /usr/local/redis_cluster/7005/redis.conf

检视redis执行

ps aux|grep redis

5.启动丛集

/www/server/redis/src/redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

这里使用的命令是create,因为我们要建立一个新的丛集。 该选项--cluster-replicas 1意味着我们希望每个建立的主服务器都有一个从服。

输入yes

至此,Reids5 丛集搭建完成。

6.检查Reids5丛集状态

可以执行redis-cli --cluster check host:port检查丛集状态slots详细分配。

redis-cli --cluster info 127.0.0.1:7000

7.停止Reids5丛集

(1).因为Redis可以妥善处理SIGTERM讯号,所以直接kill -9也是可以的,可以同时kill多个,然后再依次启动。

kill -9 PID PID PID

(2).redis5 提供了关闭丛集的工具,修改档案: /www/server/redis/utils/create-cluster/create-cluster

埠PROT设定为6999,NODES为6,工具会生成 7000-7005 六个节点 用于操作。

修改后,执行如下命令关闭丛集:

/www/server/redis/utils/create-cluster/create-cluster stop

重新启动丛集:

/www/server/redis/utils/create-cluster/create-cluster start 

8.帮助资讯

执行redis-cli --cluster help,检视更多帮助资讯

redis-cli --cluster help

吉海波

2019-09-06 21:55:00

相关文章