Redis性能管理及集群三种模式(一)

news/2024/5/14 18:47:11

一、前期准备

  至少准备三台服务器为主从复制、哨兵的实验做准备

  一台主redis、两台从redis

二、Redis性能管理

  2.1 查看Redis内存使用

    查看Redis内存使用——info memory

  2.2 内存使用率

  • 1<内存碎片<1.5表示合理的
  • 内存碎片大于>1.5,需要输入shutdown save命令,让Redis数据库执行保存操作并关闭redis服务
  • 内存碎片<1,redis内存配置超出物理内存,需要增加可用物理内存

  2.3 内回收key

    内存清理策略,保证合理分配redis有限的内存资源

    当达到设置的最大阈值时,需选择一种key的回收策略,默认情况下回收策略是禁止删除

    配置文件中修改maxmemory-policy属性值:

    vim /etc/redis/6379.conf

    ------598------

  • maxmemory-policy noenviction
  • volatile-lru:使用LRU算法已从设置过期时间的数据集合中淘汰数据(移除最近最少使用的key,针对设置了TTL的key)
  • volatile-ttl:从已设置过期时间的数据集合中挑选即将过期的数据淘汰(移除最近过期的key)
  • volatitle-random:从已设置过期时间的数据集合中随机挑选数据淘汰(在设置了TTL的key里随机移除)
  • allkeys-lru:使用LRU算法从所有数据集合淘汰数据(移除最少使用的key,针对所有的key)
  • allkeys-random:从数据集合中任意选择数据淘汰(随机移除key)
  • noenviction:禁止淘汰数据(不删除直到写满时报错)

  2.4 缓存的穿透、击穿和雪崩

  • 穿透:黑客或者其他非正常用户频繁进行很多非正常的url访问,使得redis查询不到数据库
  • 击穿:redis某个key过期了,大量访问这个key(热门key)
  • 雪崩:redis某个key过期了,大量正常访问某个key

三、主从复制

  3.1 主从复制的原理

  1. 从服务器向主服务器发送sync同步数据请求
  2. 主redis会fork一个子进程,然后会产生RDB文件(完全备份的文件)的过程,客户端还在持续地写入redis
  3. RDB文件持久化完成后,主redis会将RDB文件和缓存起来的命令推送给从服务器
  4. 复制、推送完后,主redis会持续地同步操作命令,会利用AOF(增备)持久化功能
  5. 在下一台redis接入主从复制之前会持续地利用AOF的方式来同步数据给从服务器,当出现故障时通过投票选择新的master并将所有slave连接新的master。整个哨兵集群不得少于3个节点。

  3.2 主从复制的部署

  3.2.1 首先关闭防火墙

  3.2.2 重命名

  3.2.2.1 为主服务器重命名

  3.2.2.2 为从服务器1重命名

  3.2.2.3 为从服务器2重命名

  3.2.3 编辑hosts配置文件

  3.2.3.1 为主服务器编辑hosts配置文件

  3.2.3.2 为从服务器1编辑hosts配置文件

  3.2.3.3 为从服务器2编辑配置hosts配置文件

  3.2.4 为从服务器1远程拷贝文件

   3.2.5 编译安装

  3.2.6 为服务器2安装gcc、gcc-c++

  3.2.7 在从服务器2上编译安装

  3.2.8 切换到从服务1下运行脚本文件

  3.2.9 切换到从服务2下运行脚本文件

  3.2.10 在主服务器上编辑配置文件并重新启动

  3.2.11 在从服务器1上编辑配置文件并重新启动

  3.2.12 在从服务器2上编辑配置文件并重新启动

  3.2.13 在主服务上查看日志

  3.2.14 在主服务器上显示redis信息

  3.2.15 完成主从复制操作

四、 redis哨兵模式

  4.1 核心功能

    在主从复制的基础上,引入了主节点的自动故障转移

  4.2 哨兵模式的定义

    哨兵模式是一个分布式系统,用于主从结构中的每台服务器进行监测

  4.3 哨兵的组成

  • 哨兵节点:哨兵系统由一个或多个哨兵节点组成,哨兵节点是特殊的redis节点,不存储数据
  • 数据节点:主节点和从节点都是数据节点

  4.4 哨兵模式的原理

  1. 哨兵对主从复制集群进行监控,监控对象“所有redis的数据节点”
  2. 哨兵与哨兵之间相互监控,监控的对象是哨兵彼此

    它的监测目的是:

  1. 检测彼此的存活状态
  2. 实现自动故障切换

  4.5 故障切换原理

  1. 当master挂掉,哨兵会及时发现,发现之后进行投票机制选举出一个新的master服务器(一定是基数)
  2. 完成slave向master的主从切换
  3. 完成其他的从服务器对新的master配置

  4.6 哨兵的实验部署

  4.6.1 为主从服务器进行操作(一)

    进入redis下,编辑sentinel配置文件,并且在后台运行

  4.6.2 为主从服务器进行操作(二)

    显示信息内容

  4.6.3 在主服务器上显示内容

  4.6.4 同时在主服务器和从服务器1上操作内容,完成哨兵操作

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

高级IO/多路转接-select/poll(1)

概念背景 IO的本质就是输入输出 刚开始学网络的时候&#xff0c;我们简单的写过一些网络服务&#xff0c;其中用到了read&#xff0c;write这样的接口&#xff0c;当时我们用的就是基础IO&#xff0c;高级IO主要就是效率问题。 我们在应用层调用read&&write的时候&…

第十三届蓝桥杯大赛软件赛省赛CC++大学B组

第十三届蓝桥杯大赛软件赛省赛CC 大学 B 组 文章目录 第十三届蓝桥杯大赛软件赛省赛CC 大学 B 组1、九进制转十进制2、顺子日期3、刷题统计4、修建灌木5、x进制减法6、统计子矩阵7、积木画8、扫雷9、李白打酒加强版10、砍竹子 1、九进制转十进制 计算器计算即可。2999292。 2、…

Phpstorm配置Xdebug

步骤 1、先去官网找到对应的php xdebug的版本 2、配置phpstorm断点调试 网址&#xff1a;https://xdebug.org/ 查看php对应的xdebug版本&#xff1a;Xdebug: Support — Tailored Installation Instructions 1.1查看对应php xdebug版本 全选&#xff0c;复制到目标网址 我…

Flutter应用版本管理与更新策略:在苹果商店上架后的持续优化

引言 Flutter是一款由Google推出的跨平台移动应用开发框架&#xff0c;其强大的性能和流畅的用户体验使其备受开发者青睐。然而&#xff0c;开发一款应用只是第一步&#xff0c;将其成功上架到苹果商店才是实现商业目标的关键一步。本文将详细介绍如何使用Flutter将应用程序上…

使用Java拓展本地开源大模型的网络搜索问答能力

背景 开源大模型通常不具备最新语料的问答能力。因此需要外部插件的拓展&#xff0c;目前主流的langChain框架已经集成了网络搜索的能力。但是作为一个倔强的Java程序员&#xff0c;还是想要用Java去实现。 注册SerpAPI Serpapi 提供了多种搜索引擎的搜索API接口。 访问 Ser…

pygame--坦克大战(二)

加载敌方坦克 敌方坦克的方向是随机的&#xff0c;使用随机数生成。 初始化敌方坦克。 class EnemyTank(Tank):def __init__(self,left,top,speed):self.images {U: pygame.image.load(img/enemy1U.gif),D: pygame.image.load(img/enemy1D.gif),L: pygame.image.load(img/e…