当前位置: 首页 > 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 会 向 手 机 就 …...

别再死记硬背了!用eNSP模拟一个500人公司的真实网络(含VLAN、MSTP、VRRP完整配置)

从零构建500人企业网络:eNSP实战中的VLAN、MSTP与VRRP深度解析 当你第一次面对企业级网络规划时,是否曾被各种协议和配置弄得晕头转向?本文将以一个真实的500人企业网络为蓝本,带你用华为eNSP模拟器完成从需求分析到最终实现的完整…...

GB28181视频监控平台EasyCVR助力景区数字化转型,打造一体化视频监控解决方案

随着文旅行业数字化转型进程持续加速,旅游景区的安全管理、服务优化与运营效率提升已成为行业发展的核心诉求。景区场景普遍具有面积广阔、人员流动性强等特点,传统监控方案存在设备兼容性差、可视化管控能力不足等诸多短板,难以满足当前景区…...

DeerFlow效果展示:自动生成的深度研究报告与播客内容惊艳分享

DeerFlow效果展示:自动生成的深度研究报告与播客内容惊艳分享 1. DeerFlow核心能力概览 DeerFlow作为一款深度研究智能助手,整合了语言模型、网络搜索和代码执行能力,能够自动完成从信息收集到内容生成的全流程工作。其核心功能亮点包括&am…...

RTX3070 + CUDA 11.0 实战:手把手教你从零搭建 PointNet.pytorch 环境(附常见报错解决)

RTX3070 CUDA 11.0 实战:手把手教你从零搭建 PointNet.pytorch 环境(附常见报错解决) 当你手握一块RTX3070显卡,想要复现PointNet这一经典点云处理网络时,是否曾被环境配置的各种坑绊住脚步?本文将带你避开…...

致翔智慧校园招生迎新系统正式上线!一键解锁「零跑腿」入学新体验!

告别排长队、告别填不完的纸质表、告别来回跑、告别信息反复核对!致翔智慧校园招生迎新管理系统重磅上线啦!从招生报名到迎新报到,全流程数字化、一站式智能化,轻松搞定所有环节!✨ 告别繁琐,新生入学超丝滑…...

TDAD:测试驱动的AI智能体开发

Test-Driven AI Agent Definition (TDAD) 论文核心原理解析与实例说明 TDAD 提示词演化逻辑与完整实例 TDAD的提示词演化,完全遵循测试驱动的闭环迭代逻辑:由TestSmith生成的visible tests(可见测试用例)作为唯一迭代标尺,PromptSmith智能体通过「失败用例根因分析→提示…...

AI Agent与传统RPA工具有什么本质区别?2026深度解析企业级智能体进化路径

在2026年3月下旬的当下,全球自动化技术正经历着从“按图索骥”到“自主导航”的范式跃迁。随着GPT-5.4等具备原生电脑操作能力的大模型发布,以及开源项目OpenClaw在过去一周内的爆发式增长,**AI Agent与传统RPA工具有什么本质区别&#xff1f…...

计算机毕业设计springboot月子中心信息管理系统 基于SpringBoot的产后护理中心数字化管理平台 Java母婴康复会所智能服务系统

计算机毕业设计springboot月子中心信息管理系统915bg9 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着现代社会生活节奏的加快与家庭结构的变化,越来越多的产妇选…...

Qwerty Learner设计系统构建:组件库与样式指南终极指南

Qwerty Learner设计系统构建:组件库与样式指南终极指南 【免费下载链接】qwerty-learner 为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers 项目地址: https://gi…...

Spring Boot pom.xml 属性配置 <properties> 没有统一管理 lombok 依赖版本,这里可以正常使用 ${lombok.version}

问题&#xff1a;<!-- 属性配置&#xff0c;统一管理依赖版本 --><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- MapStruct 版本 --><org.mapstruct.version>1.6.3</org.mapstruct.version>…...