redis的哨兵模式和集群模式如何解决卡顿问题

项目场景:

redis是一个很好的缓存中间件,当我们的请求很多的时候,频繁读取数据库肯定是不可取的。而当数据请求太大,对redis的操作压力也会加大。当单机redis的cpu占用率超过了50%以上,我这边是到了100%的时候,优化redis就势在必行了。


redis哨兵模式

首先我们想到的是将redis进行读写分离,那么采用哨兵模式是最好的方式

安装redis6.2.6

sudo tar -xvf redis-6.2.6.tar.gz -C /usr/local/redis && cd /usr/local/redis/redis-6.2.6 && sudo make
sudo cp /usr/local/redis/redis-6.2.6/src/redis-server /usr/local/bin/
sudo cp /usr/local/redis/redis-6.2.6/src/redis-cli /usr/local/bin/
sudo cp /usr/local/redis/redis-6.2.6/src/redis-sentinel /usr/local/bin/

配置redis.conf和sentinel.conf

先在根目录下创建一个myredis的文件夹

sudo mkdir myredis
sudo chmod 777 myredis

然后在myredis文件夹下面创建6个配置文件,可以直接到这里下载:redis哨兵模式配置文件
在这里插入图片描述

做个启动脚本

#!/bin/sh
#start redis master-slave
redis-server /myredis/redis6379.conf
redis-server /myredis/redis6380.conf
redis-server /myredis/redis6381.conf
 
redis-sentinel /myredis/sentinel26379.conf
redis-sentinel /myredis/sentinel26380.conf
redis-sentinel /myredis/sentinel26381.conf

最后使用sudo start start-redis-sentinel.sh 启动即可


redis集群模式

使用redis哨兵模式后,我发现6379对应的redis进程,就是主进程的cpu占用率还是居高不下,另外两个进程cpu占用率不高,由此我怀疑还是代码里面写的操作压力太大。于是考虑redis集群模式。

配置redis.conf

先在根目录下创建一个myredis的文件夹

sudo mkdir myrediscluster
sudo chmod 777 myrediscluster

然后在myrediscluster文件夹下面创建6个配置文件,可以直接到这里下载:redis集群模式配置文件
在这里插入图片描述

启动脚本

#!/bin/sh
#start redis cluster
redis-server /myrediscluster/redis6001.conf
redis-server /myrediscluster/redis6002.conf
redis-server /myrediscluster/redis6003.conf
redis-server /myrediscluster/redis6004.conf
redis-server /myrediscluster/redis6005.conf
redis-server /myrediscluster/redis6006.conf
sleep 10s

redis-cli --cluster create --cluster-replicas 1 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006

最后使用sudo start start-redis-cluster.sh 启动即可


结论:

集群搭建完毕后,确实3个主redis的cpu占用率得到了平分后有一定程度的下降。优化基本结束了。 当然redis写的压力太大,最后我还是去优化了代码,集群虽然能解决问题,但还是更多的要去代码层面分析问题。尽量不要在太高的并发逻辑里面做写的操作


以下是一些参考文档

redis群集模式有哪几种?

redis安装教程和redis集群搭建–主从复制(读写分离)、中间人模式(主仆兼具、去中心化)、反客为主、哨兵模式,从实战出发的保姆级别教程

Redis(1):四种模式(单机、哨兵、集群、主从复制)原理

laravel redis sentinel 和 redis cluster 配置

Redis Sentinel部署及在Laravel中使用

Redis connection [cache] not configured.

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

F_angT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值