Redis学习---05

一、Redis集群搭建,Redis主从复制,读写分离

默认情况下每台redis服务器都是主节点。

(1)  主从复制:是指将一台redis服务器的数据,复制道其他redis服务。前者成为主节点,后者成为从节点。默认情况下每一台redis服务器都是主节点。主机用来写,从机只能用来读。

(2) 配置从库:需要修改redis.conf的配置文件

配置从库的redis.conf的修改的内容:

端口号:

后台启动:

新建日志文件:

pid进程号文件:

dump.rdb文件名字

命令配置从机:salveof  ip  主机端口号(暂时配置)

info replaction :查看主机的信息;

文件配置:

(3):主机断开连接,主机不能写,从机还能读。主机一旦恢复,还是可以继续写。

(4) 复制原理:

全量复制:从机第一次连接到主机后,主机会进行一次全量的复制给到从机。

增量复制:后面增加一些东西给从机

(5)主机宕机后手动配置主机:

选择从机当作主机输入命令:salveof on one ;之后原来的主机从新启动,那原来的主机需要从新配置,原来的主机之前的从机不存在。

二、哨兵模式(面试重点)

(1) 自动选取主机的方式:自动将从机转为主机

(2) 配置哨兵文件: sentinel.conf (文件名不能错)

(3) 启动哨兵:redis-sentinel  redis_config/sentinel.conf

(4) 如果之前的主机从新启动,那也只能当作新的主机下的从机。

优缺点:

优点:可以主从切换容易,哨兵模式是主从模式的升级,更加健壮。

缺点:不可扩容。

三、缓存击穿、穿透和雪崩 (面试重点)

(1) 缓存击穿

缓存击穿: 一个并发访问量比较大的key在某个时间过期,导致所有的请求直接打在DB上。

 解决:

1) 加锁更新

查询缓存,发现缓存中不存在,加锁,让其它线程等待,只让一个线程去更新缓存。

 

2) 异步更新

还有一个可行的方案是把缓存设置永不过期。那缓存怎么更新呢?通过异步的方式去更新缓存。

比如后台设置一个守护线程定时更新缓存,但这种定时比较难以把握。异步更新机制实际上更适合用于缓存预热。

(2) 缓存穿透

缓存穿透缓存穿透指的查询缓存和数据库中都不存在的数据,这样每次请求直接打到数据库,就好像缓存不存在一样。

 解决:

1)缓存空值/默认值

一种方式是在数据库不命中之后,把一个空对象或者默认值保存到缓存,之后再访问这个数据,就会从缓存中获取,这样就保护了数据库。

 2) 布隆过滤器

除了缓存空对象,我们还可以在存储和缓存之前,加一个布隆过滤器,做一层过滤。

布隆过滤器里会保存数据是否存在,如果判断数据不在,就不会访问存储。

(3) 缓存雪崩

缓存雪崩: 当某⼀时刻发⽣⼤规模的缓存失效的情况,例如缓存服务宕机、大量key在同一时间过期,这样的后果就是⼤量的请求进来直接打到DB上,可能导致整个系统的崩溃,称为雪崩。

解决: 

1) 提高缓存可用性

  • 集群部署:通过集群来提升缓存的可用性,可以利用Redis本身的Redis Cluster或者第三方集群方案如Codis等。
  • 多级缓存:设置多级缓存,第一级缓存失效的基础上,访问二级缓存,每一级缓存的失效时间都不同。

2) 过期时间

  • 均匀过期:为了避免大量的缓存在同一时间过期,可以把不同的 key 过期时间随机生成,避免过期时间太过集中。
  • 热点数据永不过期。

3) 熔断降级

  • 服务熔断:当缓存服务器宕机或超时响应时,为了防止整个系统出现雪崩,暂时停止业务服务访问缓存系统。
  • 服务降级:当出现大量缓存失效,而且处在高并发高负荷的情况下,在业务系统内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的 fallback(退路)错误处理信息。暂停一些不重要的服务。

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

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

相关文章

puppeteer-不需重构,无痛加强vue单页面应用的SEO,提升百度收录排名

背景 最近产品觉得我们网站在百度收录上排名太靠后了,又不肯花钱,就让我们想办法提升网站的SEO。由于项目是用vue3写的,并且已经迭代多个版本了,用nuxt实在不适宜,当然俺的开发水平也不够,周期也会拉得很长…

【华为机试】——每日刷题经验分享

【华为机试】——每日刷题经验分享😎 前言🙌题目:HJ9 提取不重复的整数 总结撒花💞 😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! &a…

LabVIEWCompactRIO 开发指南22 CVT客户端通信(CCC)

LabVIEWCompactRIO 开发指南22 CVT客户端通信(CCC) 如果使用第3章中讨论的CVT进行进程间通信,请考虑使用CCC。如果已经创建了CVT标签,并且想在网络上发布此数据,CCC不失为一个简单而优雅的解决方案。它基于TCP/IP&am…

Linux 指令3

文章目录 标题日期date时间戳 cal 日历find -name 查找which ls 搜指令whereisgrep 行文本过滤工具(例如找到main函数入口)用途例子 ps ajx 进程 打包压缩,解包解压(过程是这么个过程,简化成压缩->解压)…

Java进阶-面向对象进阶(多态包权限修饰符代码块)

1 多态 1.1 多态的形式 多态是继封装、继承之后,面向对象的第三大特性。 多态是出现在继承或者实现关系中的。 多态体现的格式: 父类类型 变量名 new 子类/实现类构造器(); 变量名.方法名();多态的前提:有继承关系,子类对象…

MySQL高级语句(三)

一、正则表达式(REGEXP) 1、正则表达式匹配符 字符解释举列^匹配文本的开始字符’ ^aa ’ 匹配以 aa 开头的字符串$匹配文本的结束字符’ aa$ ’ 匹配以aa结尾的字符串.匹配任何单个字符’ a.b 匹配任何a和b之间有一个字符的字符串*匹配零个或多个在它…

MHA高可用与故障切换

一、MHA的概述 1、 MHA的概念 MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故…

前端需要注意和了解的SEO

SEO的基本了解 1.什么是SEO? SEO(Search Engine Optimization又叫做搜索引擎优化。是一种方式:利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。 2. 前端怎么理解SEO? 对于SEO引擎,在前端需要的是做出来的网站,页面…

揭秘物联网平台设备管理核心!Java代码示例对比,一篇文章全知道!

《高并发系统实战派》-- 值得拥有 一、 设备管理模块的意义 设备管理模块是物联网平台的核心模块之一,主要负责设备的接入、注册、管理、监控等工作,是构建物联网平台的基础。通过设备管理模块,可以实现对设备的资源动态管理、设备状态实时…

服务(第二十一篇)mysql高级查询语句(二)

①视图表: 视图表是虚拟表,用来存储SQL语句的定义 如果视图表和原表的字段相同,是可以进行数据修改的; 如果两者的字段不通,不可以修改数据。 语法: 创建:create view 试图表名 as ... 查…

vue3项目搭建超详解

vue3安装与目录讲解 文章目录 vue3安装与目录讲解安装node.jsnpm绑定淘宝镜像安装vue脚手架创建vue项目目录解释推荐使用vscode 安装node.js http://nodejs.cn/download/ 根据自己电脑的位数自行下载。可安装到任意盘哈,因为我C盘比较大,我就直接在C盘了…

springboot项目如何优雅停机

文章目录 前言kill -9 pid的危害如何优雅的停机理论步骤优雅方式1、kill -15 pid 命令停机2、ApplicationContext close停机3、actuator shutdown 停机4、ApplicationListener 监听延时停机 前言 相信很多同学都会用Kill -9 PID来杀死进程,如果用在我们微服务项目里…

快速入门matlab——变量练习

学习目标:1.掌握matlab编程中最常用的几种变量类型 2.对变量类型的属性有所熟悉,不要求记忆,知道了解即可 3.要求熟练运用这几种变量类型创建自己的变量 clear all; % 清除Workspace中的所有…

FreeRTOS_移植和配置

目录 1. 什么是FreeRTOS? 2. FreeRTOS 特点 3. FreeRTOS 移植 3.1 验证程序 1. 什么是FreeRTOS? 我们先看 FreeRTOS 的名字,可以分成两部分:Free 和 RTOS,Free 就是免费的、自由的、不受约束的意思,RTO…

ERP、SCM与CRM系统的关系和区别是什么?

在当今数字化时代,企业管理系统扮演着至关重要的角色,而ERP、SCM和CRM系统是其中三个核心组成部分。 虽然它们都在企业管理中发挥着关键作用,但它们各自的功能和应用领域存在一些区别。 我们先来看看,ERP、SCM与CRM系统分别是啥…

DevExpress:报表控件绑定数据库数据源的三种方式(Winform)

1.写在前面 如果你是和我一样,第一次接触DevExpress,并且因为网上资源眼花缭乱无从下手,然后脑子一转直接到DevExpress官网寻找官方使用文档的,那我们的了解顺序应该差不多是一致的。 DevExpress官网:https://www.de…

(十六)数据编辑——图形编辑②

数据编辑——图形编辑② 目录 数据编辑——图形编辑②1.5线要素的延长和裁剪1.5.1线要素延长1.5.2线要素裁剪 1.6要素的变形与缩放1.6.1要素变形操作1.6.2要素缩放操作 1.7要素结点的编辑1.7.1添加结点1.7.2删除结点1.7.3移动结点 1.5线要素的延长和裁剪 单击编辑器下拉菜单&a…

ChatGPT 联网和插件功能,下周起可直接使用,无需排队!

夕小瑶科技说 分享 来源 | 新智元 OpenAI和谷歌,已经打得急红了眼,ChatGPT Plus用户,下周就可以体验联网和插件功能,无需再排队。鲨疯了,真的鲨疯了! ChatGPT,下周开始联网,并开放插…

字典翻译EasyTrans简单使用分享

前言 最近太忙了,一直按在项目上摩擦,都没有时间写分享了。今天终于市把所有负责的模块都写完了,本次迭代引入了字典翻译,借这个机会顺便分享下。 一、什么是字典翻译 所谓的字典翻译其实简单理解就是一些不常更新的有键值对属性的…

如何利用python调用API接口获取数据进行测试

一、Python 可以使用 requests 库来调用 API 接口获取数据。以下是基本的步骤: 1.安装 requests 库 pip install requests 2.导入 requests 库 import requests 3.构建 API 请求的 URL 根据 API 文档,构建请求的URL。 例如, https://a…