当前位置: 首页 > news >正文

【软考高级架构】关于分布式数据库缓存redis的知识要点汇总

一.分布式数据库的含义

        分布式数据库缓存指的是在高并发的环境下,为了减轻数据库的压力和提高系统响应时间,在数据库系统和应用系统之间增加一个独立缓存系统。

二.常见的缓存技术


(1)MemCache: Memcache是一个高性能的分布式的内存对象缓存系统,用于动态Web应用以减轻数据库负载。Memcache在内存里维护一个统一的巨大的hash表,数据存在该hash表中。
(2)Redis: Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、KeyValue数据库 (支持多种数据结构,如key-value、string、set、list等),并提供多种语言的API。
(3)Squid:Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。

三.Memcache与Redis的对比

四.Redis分布式存储的常见方案

1、主从模式 (Master/Slavel):一机多从,故障时手动切换

2、哨兵模式 (Sentinel):有哨兵的一主多从,主节点故障自动选择新的节点

3、集群模式(Cluster):分界点对等集群,分slots,不同的slots的信息存储到不同的节点

五.Redis集群切片的常见方式

1、客户端分片:即在客户端通过key的hash值对应到不同的服务器。

2、中间件实现分片:在应用软件和Redis中间,例如: Twemproxy、Codis等,由中间件实现服务到后台Redis节点的路由分派.

3、客户端服务端协作分片:Redis Cluster模式,客户端可采用一致性哈希,服务端提供节点的重定向服务slot上。不同的slot对应到不同服务器。

六.Redis的分片方案

1、范围分片:按照数据范围来分片

2、哈希分片:通过Key进行hash运算分片,可以将数据比较均匀地分配到每一个结点,类似取余操作。

3、一致性哈希分片:哈希分片的改进,把存储节点和需要存储的数据放在一个hash环上,数据根据hash值在hash环上按照顺时针方向找到对应的结点

七.Redis和数据库之间数据同步方案(一致性)

1、读取数据时,先读取redis中的数据,如果redis没有,则从原数据库中读取,并同步更新redis中的数据。写回时,写入到原数据库中,并同步更新到redis中

2、异步队列方式实现同步,可采用消息中间件处理

3、通过数据库插件完成数据同步

4、利用触发器进行缓存同步

八.Redis的数据淘汰算法

1、不淘汰:noeviction,当空间不足时就报错,是系统的默认淘汰策略。

2、设置过期时间的键空间:

         2.1、volatile-random:随机移除某个key

         2.2、volatile-lru:移除最近没有使用的

         2.3、volatile-ttl:ttl值小的key优先淘汰

3、全键空间:

         3.1、allkey-random:随机移除某个key

         3.2、allkey-lru:移除最近没有使用的

九.Redis的持久化

1、AOF:日志思路,把每条操作命令追加到AOF文件尾部,一旦有问题可以重新执行AOF文件中的命令

2、RDB:快照,指定时间间隔将数据进行快照存储

十.Redis常见问题

1、缓存雪崩

定义:大部分缓存失效导致请求往数据库发送,导致数据库奔溃

解决方案:

  1. 使用锁或队列:使用排他锁或者队列方式保证不会有大量线程对数据库一次性进行读写,避免缓存雪崩时大量并发请求落到底层存储系统上
  2. 为key设置不同的缓存失效时间:固定失效时间+随机失效时间
  3. 二级缓存:设置两个缓存(有时间限制+无时间限制),避免大规模访问数据库导致缓存雪崩

2、缓存穿透

定义:查询无数据返回导致直接插数据库,查询一个数据时,优先在缓存中寻找,如果缓存中没有就去数据库中寻找,但如果数据库中也没有,就会返回一个空值,但是如果后面还要查找这个数据,就会频繁地重复以上步骤,这就违背了当初设置缓存的作用

解决方案:

  1. 第一次查询结果为空时,设置一个默认值存放到缓存,第二次再查到缓存里就有值了。在设置一个5分钟的过期时间,以便正常更新缓存
  2. 设置布隆过滤器,将所有可能存在的数据hash到一个足够大的bitmap中,一个不存在的数据会被bitmap拦截掉,从而避免了对底层数据库的查询压力

3、缓存预热

相关文章:

【软考高级架构】关于分布式数据库缓存redis的知识要点汇总

一.分布式数据库的含义 分布式数据库缓存指的是在高并发的环境下,为了减轻数据库的压力和提高系统响应时间,在数据库系统和应用系统之间增加一个独立缓存系统。 二.常见的缓存技术 (1)MemCache: Memcache是一个高性能的分布式的内…...

构建自然灾害预警决策一体化平台,筑牢工程安全数字防线

近年来,国家和部委也强调了要切实加强地质灾害监测预警。作为国内智慧应急领域的先行者,Mapmost持续探索利用数字孪生技术,推进自然灾害风险预警精细化,强化对监测数据的综合分析和异常信息研判处置。建立健全区域风险预警与隐患点…...

随机题两题

逆序对 题目 给定一个数组,求其中有多少逆序对,要求时间复杂度不超过nlogn。 思路 使用归并排序的分治思想,将数组递归地分为左右两部分。在合并两个有序子数组时,若左侧数组中的某个数大于右侧数组中的某个数,则可…...

信息安全工程师(69)数字水印技术与应用

前言 数字水印技术是一种在数字媒体中嵌入特定信息的技术,这些信息可以是版权信息、元数据等。 一、数字水印技术的定义与原理 数字水印技术(Digital Watermarking)是将一些标识信息(即数字水印)直接嵌入数字载体&…...

知识点框架笔记3.0笔记

如果基础太差,搞不清基本交规的(模考做不到60分),建议找肖肖或者小轩老师的课程看一遍,内容差不多(上面有链接),笔记是基于肖肖和小轩老师的科目一课程以及公安部交管局法规&#xf…...

Android组件化开发

Android组件化开发 组件化开发概念组件化开发的由来组件化开发有什么优势?组件化开发如何拿到入口参数?如何解决相同资源文件名合并的冲突?模式切换,如何使APP在单独调试跟整体调试自由切换?多个Module之间如何引用一些共同的library以及工具类?我们如何实现依赖关系及组…...

centos-LAMP搭建与配置(论坛网站)

文章目录 LAMP简介搭建LAMP环境安装apache(httpd)安装mysql安装PHP安装php-mysql安装phpwind LAMP简介 LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:Linux操作系统,网页服务器Apache,…...

Python 实现日期计算与日历格式化输出

目录 一、引言 二、需求分析 三、实现思路 四、代码实现 五、代码分析 六、测试与验证 七、总结与展望 在日常的编程中,我们经常会遇到与日期相关的问题,比如计算两个日期之间的天数差、确定某个特定日期是星期几以及格式化输出日历等。本文将详细…...

npm install 安装很慢怎么办?

安装源管理器nrm sudo npm install -g nrm #macOSnpm install -g nrm #Windows以管理员身份运行 安装完毕之后通过以下命令可以切换你想要的源 nrm ls #查看源列表* npm ---------- https://registry.npmjs.org/yarn --------- https://registry.yarnpkg.com/tencent ------…...

【WRF数据处理】基于GIS4WRF插件将geotiff数据转为tiff(geogrid,WPS所需数据)

【WRF数据处理】基于GIS4WRF插件将geotiff数据转为tiff(geogrid,WPS所需数据) 数据准备:以叶面积指数LAI为例QGis实操:基于GIS4WRF插件将geotiff数据转为tiff警告:GIS4WRF: Input layer had an unexpected …...

python+大数据+基于Hadoop的个性化图书推荐系统【内含源码+文档+部署教程】

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…...

修改huggingface的缓存目录以及镜像源

执行以下语句查看当前配置 huggingface-cli env默认输出应该如下 (py39-transformers) PS D:\py_project\transformers_demo> huggingface-cli envCopy-and-paste the text below in your GitHub issue.- huggingface_hub version: 0.26.1 - Platform: Windows-10-10.0.22…...

散列表:如何解决哈希表装载因子过高导致的性能下降问题?

散列表:如何解决哈希表装载因子过高导致的性能下降问题? 当哈希表装载因子过高时,会导致性能下降,可以通过以下几种方法来解决: 一、扩容哈希表 (一)原理 当装载因子超过一定阈值时,增加哈希表的大小,然后将现有的元素重新哈希到新的哈希表中。这样可以降低装载因…...

Vue Router进阶学习

各位程序员1024节日快乐~ Vue Router 是 Vue.js 的官方路由管理器,它和 Vue.js 的核心深度集成,让构建单页面应用(SPA)变得简单。以下是 Vue Router 的基本用法 Vue Router 基本用法 安装 Vue Router 首先,你需要安…...

Linux巡检利器xsos的安装和使用

一、 一般项目基本完成的时候,后期运维工作的重点就是及时的,合理的频率巡检了,巡检的目的主要是及时发现各种各样的问题 那么,自己编写shell脚本是大部分人的第一选择,这里有个比较麻烦的地方,shell脚本…...

Django+Vue项目搭建

一、使用脚手架工具搭建项目 使用脚手架工具搭建Vue项目是一个快速且高效的方式,它能够帮助开发者自动配置好项目所需的环境和依赖。 一、安装Node.js和npm 1、下载Node.js: 前往Node.js官网下载并安装最新版本的Node.js。Node.js是一个基于Ch…...

【NLP自然语言处理】Attention机制原理揭秘:赋予神经网络‘聚焦’与‘理解’的神奇力量

目录 🍔 注意力机制原理 1.1 注意力机制示意图 1.2 Attention计算过程 1.3 Attention计算逻辑 1.4 有无Attention模型对比 1.4.1 无Attention机制的模型 1.4.2 有Attention机制的模型 🍔 Self-attention演变过程 2.1 Self-attention介绍 2.2 S…...

PHP依赖注入的原理

PHP中的依赖注入(Dependency Injection,简称DI)是一种设计模式,旨在解耦和管理对象之间的依赖关系,使得代码更加灵活、可测试和可维护。其原理及关键要点如下: 一、原理 依赖注入的原理是通过外部传递依赖…...

文本相似度方案

文章目录 SequenceMatcher余弦相似度基于逆向文档频率向量化 SequenceMatcher from difflib import SequenceMatcher s1 "1.2 章节标题【abc】" s2 "1.2 章节标题【abc】、【she】、【this】" SequenceMatcher(None, s1, s2).ratio() # 0.6666666666666…...

appium 的工作原理

** 安卓: ** 1.1 appuim 基于 uiautomator2 的原理 appium 服务启动后默认在 4723 端口上创建一个 http 服务,脚本通过服务地址 http://xxxx:4723/wd/hub 和 appium 进行通信 在 初 始 化 脚 本 和 appium 连 接 的 过 程 中 appium 会 向 手 机 就 …...

快速上手3DGS数字孪生开发:一份必做的技术动作盘点清单

一、行业核心技术科普:3DGS数字孪生开发的关键技术节点从零开始构建一个基于3D高斯泼溅(3DGS)的数字孪生应用,涉及多个关键技术节点。每个节点的执行质量,都直接影响最终应用的性能与用户体验。其域创新推出的LCC格式&…...

告别驱动烦恼:用TI官方CCS开发MSP430,为什么比第三方IAR更省心?

嵌入式开发者的效率革命:为什么TI官方CCS是MSP430开发的最优解? 在嵌入式开发领域,工具链的选择往往决定了项目的启动速度和开发体验。对于MSP430系列微控制器的开发者而言,面对IAR、GCC和TI官方的Code Composer Studio(CCS)等多种…...

西南交通大学【数电实验之Modelsim仿真全流程实战】

1. 从零开始搭建Modelsim仿真环境 第一次接触数字电路仿真的同学可能会觉得Modelsim界面复杂,其实只要跟着步骤一步步操作,半小时就能跑通第一个仿真案例。我当年在西南交大做数电实验时,也经历过从一脸懵到熟练操作的过程,这里把…...

8051单片机sbit位操作失效问题与volatile解决方案

1. 问题现象与背景解析在8051单片机开发中,我们经常需要对寄存器或内存中的特定位进行操作。Keil C51编译器提供了sbit关键字来实现位寻址功能,这是一种非常高效的位操作方式。但在实际开发中,不少工程师遇到过这样的困扰:明明在代…...

SteamAutoCrack终极破解指南:三分钟移除游戏DRM保护

SteamAutoCrack终极破解指南:三分钟移除游戏DRM保护 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack 你是否遇到过Steam游戏无法离线运行的问题?或者想要在没有S…...

Perplexity估值从3B美元缩水至1.8B?华尔街分析师闭门会议纪要首度流出(含5条未公开预警红线)

更多请点击: https://intelliparadigm.com 第一章:Perplexity估值缩水事件全景速览 2024年第三季度,AI搜索初创公司Perplexity在完成新一轮融资后,其内部估值从2023年底的10亿美元迅速回调至约7.5亿美元,引发全球科技…...

MRI绕组结构设计及均匀度优化算法【附算法】

✨ 长期致力于MRI、均匀度、球面谐波、目标场、主被动匀场、优化算法、超导磁体、线性规划、非线性规划研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1&#xff0…...

LibSVM在Matlab里的实战:从分类到回归,手把手调参与结果解读

LibSVM在Matlab里的实战:从分类到回归,手把手调参与结果解读 当你第一次在Matlab中成功运行LibSVM时,看到命令行窗口跳出"Accuracy 86.6667%"的那一刻,可能既兴奋又困惑。兴奋的是工具终于跑通了,困惑的是那…...

GitHub项目改名后,本地仓库如何无缝衔接?保姆级操作指南(含常见错误排查)

GitHub项目改名后本地仓库无缝衔接全攻略:从原理到实战 当你兴冲冲地在GitHub上给项目改了个更酷的名字,回到命令行却看到一堆红色报错信息时,那种感觉就像搬家后发现自己忘带钥匙。本文将带你深入理解Git远程仓库的连接机制,并提…...

食品制造 | 品控AI自动化方案主流厂商横评:2026企业级智能体选型与落地实测

2026年,全球食品制造业正处于从“数字化转型”向“智能化深耕”跨越的关键节点。随着国家市场监管总局“互联网AI监管”战略的全面深化,食品安全已不再仅仅依赖于周期性的线下抽检,而是转向了基于AI技术的全时段、全链路实时监控。 从校园食堂…...