redis的高可用(主从复制和哨兵模式)

redis的高可用(主从复制和哨兵模式

redis的性能管理:redis的数据缓存在内存当中

INFO memory:查看redis内存使用情况

used_memory:1800800:redis中数据占用的内存

used_memory_rss:5783552:redis向操作系统申请的内存

used_memory_peak:1800800:redis使用内存的峰值

系统巡检:硬件巡检,数据库,nginx,redis,docker,k8s

redis-cli info memory | grep ratio:过滤内存碎片

内存碎片率:used_memory_rss/used_memory

系统已经分配给了redis,但是redis未能够有效利用的内存

allocator_frag ratio:1.19

分配器碎片的比例,redis主进程调度时产生的内存,比例越小越好,值越高,内存的浪费越多

allocator_rss_ratio:7.15

分配器占用物理内存的比例,告诉你主进程调度执行时占用了多少物理内存

rss_overhead_ratio:0.31

RSS是向系统申请的内存空间,redis占用物理空间额外的开销比例,比例越低越好,redis实际占用的物理内存和向系统申请的内存越接近,额外的开销就越低

mem_fragmentation_ratio:3.33

内存碎片的比例,越低越好,内存的使用率越高

碎片可以自动清理(手动清理redis-cli memory purge和自动清理在配置文件redis最后一行添加activedefrag yes)

设置redis的最大内存阀值:(在/etc/redis/6379.conf中568行maxmemory 1gb)

一旦到达阀值,自动清理碎片,开启key的回收机制

key回收的策略:(要先设置上面的阀值

配置文件redis/5379.conf,598行增加

maxmemory-policy volatile-lru:使用redis内置的LRU算法,把已经设置了过期时间的键值对中淘汰数据,移除最近最少使用键值对(针对已经设置了过期时间的键值对)

maxmemory-policy volatile-ttl:已经设置了过期时间的键值对,从当中挑选一个即将过期的键值对

maxmemory-policy volatile-random:从已经设置了过期时间的键值对当中,挑选数据随机淘汰键值对(对设置了过期时间的键值对进行随机移除)

allkeys-lru:LRU算法当中,对所有的键值对进行淘汰,移除最少使用的键值对(针对所有的键值对)(慎用)

allkeys-random:从所有键值对当中任意选择数据进行淘汰(慎用或别用)

maxmemory-policy noeviction:禁止键值对回收(不擅长任何键值对,直到redis把内存塞满,写不了,报错为止)

在工作当中,一定要给redis占用内存设置阀值

面试题:

redis占用的内存的效率问题如何解决?

1、日常巡检当中,对redis的占用情况做监控

2、设置redis占用系统内存的阀值(在/etc/redis/6379.conf中568行maxmemory 1gb),避免占用系统全部内存

3、内存碎片清理(手动清理redis-cli memory purge和自动清理在配置文件redis最后一行添加activedefrag yes

4、设置合适的key回收机制

maxmemory-policy noeviction:禁止键值对回收(不擅长任何键值对,直到redis把内存塞满,写不了,报错为止)

maxmemory-policy volatile-lru:使用redis内置的LRU算法,把已经设置了过期时间的键值对中淘汰数据,移除最近最少使用键值对(针对已经设置了过期时间的键值对)

redis雪崩(缓存雪崩):

大量的应用请求无法在redis缓存当中处理,请求会全部发送到后台数据库,数据库并发能力本身就差。一旦高并发,数据库会很快崩溃

redis集群大面积故障

redis缓存中,大量数据同时过期,大量的请求无法得到处理

redis实例宕机

解决方案:

事前:采用高可用架构,防止整个缓存故障。主从复制和哨兵模式 redis集群

事中:在国内用的比较多哥方式:HYSTRIX,熔断,降级,限流三个手段来降低雪崩发生之后的损失。

数据库不死即可,慢可以,但是不能没有响应

事后:redis备份,快速缓存预热

redis的缓存击穿:

缓存击穿主要是热点数据缓存过期,或者被删除,多个请求并发访问数据,请求也是转发到数据库了,导致数据库的性能快速下降

经常被请求的缓存数据,最好设置为永不过期

redis的缓存穿透:

缓存中没有数据,数据库也没有对应数据,但是有用户一直在发起这个都没有的请求,而且请求的数据格式很大

一般这种情况就是黑客利用漏洞进行攻击,压垮应用数据库

redis的集群:

1、持久化

2、高可用  主从复制  哨兵模式  集群

主从复制:主从复制是redis实现高可用的基础,哨兵模式和集群都是在主从复制的基础之上实现高可用

          主从复制实现数据的多机备份,以及读写分离(主服务器负责写,从服务器只能读)

          缺陷:故障无法自动恢复,需要人工干预,无法实现写操作的负载均衡

主从复制的工作原理:

  1. 主节点(master)从节点(slave)组成,数据复制是单向的,只能从主节点到从节点

主从复制的实验:

(主)打开配置文件:vim /etc/redis/6379.conf

70行 IP地址改为0.0.0.0,让所有的主机都可以使用

137行 daemonize yes打开

700行 appendonly no打开变成yes

重启配置文件:/etc/init.d/redis_6379 restart

(从)打开配置文件:vim /etc/redis/6379.conf

70行 IP地址改为0.0.0.0,让所有的主机都可以使用

137行 daemonize yes打开

288行添加一行replicaof 192.168.233.11 6379

700行 appendonly no打开变成yes

哨兵模式:先有主从再有哨兵

在主从复制的基础之上,实现主节点故障的自动切换

哨兵模式的原理:

哨兵:分布式系统,用于在主从结构之间,对每台redis的服务进行监控

主节点出现故障时,从节点通过投票的方式选择一个新的master

哨兵模式也需要至少三个节点

哨兵模式的结构:

哨兵节点:监控,不存储数据

数据节点:主节点和从节点,都是数据节点

主:192.168.233.11

从:192.168.233.12

从:192.168.233.13

哨兵模式的实验:

(主)cd /opt/

cd redis-5.0.7/

vim sentinel.conf

17行注释取消掉protected-mode no

26行daemonize no改成yes

36行logfile "/var/log/sentinel.log"

65行dir "/var/lib/redis/6379"

84行sentinel monitor mymaster 192.168.233.11 6379 2

启动配置文件redis-sentinel sentinel.conf &

redis-cli -p 26379 info Sentinel

ps -elf | grep redis

(从)cd /opt/

cd redis-5.0.7/

vim sentinel.conf

17行注释掉protected-mode no

26行 daemonize no改为yes

36行logfile "/var/log/sentinel.log"

65行dir "/var/lib/redis/6379"

84行sentinel monitor mymaster 192.168.233.11 6379 2

启动配置文件redis-sentinel sentinel.conf &

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

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

相关文章

微机原理_1

一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案,请将选定的答案填涂在答题纸的相应位置上。) 1,下列8086CPU标志寄存器的标志位中,不属于状态标志位的是() A. OF B. IF C. AF D. PF 8086微处理器可寻址访问的最大…

Tesco EDI需求分析

Tesco,成立于1919年,是一家全球领先的综合性零售企业,总部位于英国。公司致力于提供高质量、多样化的商品和服务,以满足客户的需求。Tesco的使命是通过创新和卓越的客户服务,为客户创造更美好的生活。多年来&#xff0…

部署jekins遇到的问题

jdk问题 我用的jdk版本是21的结果版本太新了,启动jekins服务的时候总是报错最后在jekins的安装目录下面的jekinsErr.log查看日志发现是jdk问题最后换了一个17版本的就解决了。 unity和jekins jekins和Git源码管理 jekins和Git联动使用 我想让jekins每次打包的时…

ubuntu编译sqlite3并使用

SQLite3是一种轻量级的关系型数据库管理系统,它是在C语言基础上实现的。SQLite3具有许多优点,例如: 1.灵活:它可以在多种操作系统上运行,并且可以将多个数据库文件合并成一个文件。 2.易于使用:SQLite3使用…

MFS分布式文件系统

目录 集群部署 Master Servers ​Chunkservers ​编辑Clients Storage Classes LABEL mfs高可用 pacemaker高可用 ​编辑ISCSI 添加集群资源 主机 ip 角色 server1 192.168.81.11 Master Servers server2 192.168.81.12 Chunkservers server3 192.168.81.13 Chunkserver…

数字逻辑电路基础-时序逻辑电路之锁存器

文章目录 一、锁存器简介二、verilog源码三、综合及仿真结果 一、锁存器简介 本文介绍数字逻辑电路中一种常用的基础时序逻辑电路-锁存,顾名思义,它的功能就是将输入在控制信号有效时透明传输到输出端,当控制信号无效时,输出值保…

我们对凌鲨的一次重构

在10月我们对凌鲨进行了一次重构,把所有鸡肋的功能都删除了。 新版本界面 老版本界面 我们干掉的功能 移除沟通频道功能 沟通频道类似slack功能,用于团队沟通。由于国内有大量的沟通软件,比如企业微信,飞书,钉钉等。…

ubuntu操作系统中docker下Hadoop分布式前置环境配置实验

版本: centos7 hadoop 3.1.3 java JDK:1.8 集群规划: masterslave1slave2HDFS NameNode DataNode DataNode SecondryNameNode DataNode YARNNodeManager ResourceManage NodeManager NodeManager 1.docker容器: 把普通用户加入到docker组&am…

【深度学习】脸部修复,CodeFormer,论文,实战

代码: https://github.com/sczhou/CodeFormer 论文:https://arxiv.org/abs/2206.11253 Towards Robust Blind Face Restoration with Codebook Lookup Transformer 文章目录 论文摘要1 引言2 相关工作**4 实验****4.1 数据集****4.2 实验设置和指标***…

虹科Pico汽车示波器 | 汽车免拆检修 | 2017款东风本田XR-V车转向助力左右不一致

一、故障现象 一辆2017款东风本田XR-V车,搭载R18ZA发动机,累计行驶里程约为4万km。车主反映,车辆行驶或静止时,向右侧转向比向左侧转向沉重。 二、故障诊断 接车后试车,起动发动机,组合仪表上无故障灯点亮&…

基于SSM的济南旅游网站设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

摩尔定律,梅特卡夫定律,吉尔德定律

信息系统的三大定律(摩尔定律,梅特卡夫定律,吉尔德定律)有一个清晰的视角: 信息系统不是左边的生产消费系统,而是右边的交易系统,交易系统与生产消费典型的区别在于信息交易过程会产生新的信息,就像钱一样…