高性能高并发网站架构,教你搭建Redis5缓存集群

news/2024/5/9 1:33:49/文章来源:https://blog.csdn.net/weixin_34265814/article/details/94456280

一、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

  

转载于:https://www.cnblogs.com/hiit/p/11105237.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_848809.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新奇小玩意购物网站推荐

在国外博客上看到许多小玩意的介绍,有不少都有收入囊中的冲动,但相信有不少人都像我一样因为国际支付的问题而难以如愿吧,今天就向大家推荐两个国内专门销售这类小玩意的购物网站,IdeaShow、呼哈网。[more]IdeaShow和呼哈网的slog…

CMP网站改版-加强网络功能

CMP是最大的专业媒体集团之一&#xff0c;旗下拥有DDJ,SD&#xff0c;CUJ,<MSDN等多本优秀的软件技术杂志。现在其网站作了全面的改版&#xff0c;原来各个独立的杂志网站现在统一风格&#xff0c;统一注册用户&#xff0c;显示CMP在加强杂志在网络上的互动建设&#xff1b;…

【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器

一、反向代理&#xff1a;Web服务器的“经纪人” 1.1 反向代理初印象 反向代理&#xff08;Reverse Proxy&#xff09;方式是指以代理服务器来接受internet上的连接请求&#xff0c;然后将请求转发给内部网络上的服务器&#xff0c;并将从服务器上得到的结果返回给internet上请…

【问底】李平:大型网站的灵魂——性能

在前一篇随笔 大型网站系统架构的演化中&#xff0c;介绍了大型网站的演化过程&#xff0c;期间穿插了一些技术和手段&#xff0c;我们可以从中看出一个大型网站的轮廓&#xff0c;但想要掌握设计开发维护大型网站的技术&#xff0c;需要我们一步一步去研究实践。所以我打算写一…

【问底】徐汉彬:大规模网站架构的缓存机制和几何分形学

在过去的工作中&#xff0c;徐汉彬从事各类缓存建设和优化&#xff0c;遇到问题无数&#xff0c;从各种各样的问题中&#xff0c;逐渐总结出它们之间的“共性”&#xff0c;而这个“共性”又优雅地遵循“几何分形学”。从几何分形的角度去看待缓存机制&#xff0c;能够更容易和…

10个学习Android开发的网站推荐

作为一个Android 开发者&#xff0c;官网的资料当然不可错过&#xff0c;从设计&#xff0c;培训&#xff0c;指南&#xff0c;文档&#xff0c;都不应该错过&#xff0c;在以后的学习过程中慢慢理解体会。 Android DeveloperAndroid Guides - CodePath CodePath 是国外一个技术…

某大神网站发现2048一枚

在论坛发现2048的C语言的源代码。 真心佩服大神的创作。 复制一起学习。 ////Console2048://C语言写的一个手机游戏2048的控制台版。//作者&#xff1a;0xAA55//QQ&#xff1a;838816058//论坛&#xff1a;www.技术宅的结界.com//2048原版作者&#xff1a;//Gabriele Cirulli…

分分钟搞定Wordpress网站HTTPS升级

序 自从浏览器开始主动提示网站不安全开始&#xff0c;我就一直想找机会把博客站aTechie做一下升级&#xff0c;终于……终于这次找到机会了&#xff08;太懒了&#xff0c;哈哈哈&#xff09;。 关于HTTPS 先用一张图片来直观展现HTTPS的原理 简单的说&#xff0c;HTTPS的…

ecs 对比 本地服务器_阿里云服务器建站、心选建站、定制建站有什么区别,如何选择...

使用阿里云建网站的三种方式购买云服务器手动建站、云速成美站模板建站或者选择阿里云定制建站三种方式&#xff0c;下面为你们分享利用阿里云建立网站的三种方式及优点对比&#xff1a;服务器阿里云建站方法汇总网站使用阿里云建站能够有三种方式&#xff0c;阿里云第一种是购…

JS--网站统计中的数据收集原理及实现

来源&#xff1a;http://blog.codinglabs.org/articles/how-web-analytics-data-collection-system-work.html 网站数据统计分析工具是网站站长和运营人员经常使用的一种工具&#xff0c;比较常用的有谷歌分析、百度统计和腾讯分析等等。所有这些统计分析工具的第一步都是网站访…

某个在线学习网站提交学习进度的方式

没到月底&#xff0c;领导要求我们完成公司网站的学习进度&#xff0c;于是想搞清楚这个在线学习网站更新学习进度的方法&#xff0c;可以快速更新学习进度&#xff0c;算是解决了学习任务的紧迫性。一开始看到一个按键&#xff0c;当学习快结束是&#xff0c;网站会提示”我已…

网站用户登录过程中的cookie的作用

测试一个学习平台项目时&#xff0c;需要验证用户账号是否可以正常登录。使用jmeter工具测试&#xff0c;fiddler辅助查看请求和响应消息。 开始的想法很简单&#xff0c;在登录页面查看到&#xff0c;点击登录按键会出发一个POST请求&#xff0c;想通过jmeter模拟post请求&am…

网站jar包功能分析

agileggfw.agilemgr.jar包引用了HibernateTransactionManager和FreeMarkerViewResolver 还不清楚做什么的 agileggfw.captcha.jar包引用jcaptcha-1.0.jar&#xff0c;作用是生成验证码&#xff1a; JCaptcha 简介 <?xml version"1.0" encoding"UTF-8&qu…

网站引导功能实现

网站新上线一个功能&#xff0c;往往会有一些引导功能&#xff0c;其实很简单&#xff0c;就是一些做好的图片通过css,js控制&#xff0c;拼接在一起。 上一些来自百度网的截图&#xff0c;一看就明白。

每个软件开发人员都应关注的7个网站

1. DEV社区 这是一个伟大的网站&#xff0c;可以随时了解最新技术以及下一轮繁荣。您可以关注自己感兴趣的主题。文章和视频的供稿将根据您的喜好生成。 只需访问网站并搜索您想要探索的技术和概念。您将获得许多相同的文章&#xff0c;视频和播客教程。它的技术新闻版块将使您…

测试基于php的购物网站,基于ThinkPHP开发的购物网站-微淘淘开发笔记

历经半个多月的断断续续的编写&#xff0c;一款基于ThinkPHP的购物网站开发完成并完成了初步的测试检测与修复&#xff0c;这款程序可以称之为到现在为止完全我自己独立编写完成的最大规模的一个 PHP 程序&#xff0c;为其起名叫做微淘淘&#xff0c;随便起的。由于使用的 TP 开…

html页面去空白页,通过Iframe在A网站页面内嵌入空白页面的方式,跨域获取B网站的数据返回给A网站!_html/css_WEB-ITnose...

以下代码只是为演示该方法具体是如何操作的&#xff0c;实际的意义并不大。其实这个方法还可以解决很多方面的跨域操作&#xff0c;以下两点为我工作中遇到的情况&#xff01;比如A系统中打开B系统页面的时候&#xff0c;获取B系统页面高度&#xff0c;A系统中可以动态设置窗口…

程序员本地网站

这道题要求从本地访问&#xff0c;打开burpsuite抓包&#xff0c;加上&#xff1a;X-Forwarded-For: 127.0.0.1 就好了 X-Forwarded-For: 简称XFF头&#xff0c;它代表客户端&#xff0c;也就是HTTP的请求端真实的IP&#xff0c;只有在通过了HTTP 代理或者负载均衡服务器时才会…

推荐几个正经网站,让你的数据结构和算法学习事半功倍!

前言 相信对于大部分程序员来说&#xff0c;数据结构和算法学起来是比较难的&#xff0c;但是它在工作中又是非常的重要&#xff0c;可以说是开发中的一块基石。 所以为了更好的学习和理解数据结构和算法&#xff0c;当时我是趁着双十一搞活动买了几本算法书&#xff0c;打算一…

AboutDNN网站链接交换图标

重新设计一个AboutDNN.com网站的图标。 标准的88*31像素的图标&#xff1a; 图片地址&#xff1a;http://www.aboutdnn.cn/logo/AboutDNN_com_88_31.gif 图片地址&#xff1a;http://www.aboutdnn.cn/logo/aboutdnn_com_120_30.gif 图片地址&#xff1a;http://www.aboutdnn.cn…