【Memcached】Memcached的工作原理

目录

​编辑

第2章:Memcached工作原理

2.1 数据存储与访问

2.2 分布式架构

2.3 数据过期机制


第2章:Memcached工作原理

2.1 数据存储与访问

     Memcached是一种键值存储系统,其中数据以键值对的形式存储。键是用于定位数据的唯一标识符,而值则是要存储的数据本身。在Memcached中,键是一个字符串,长度通常限制在250字节以内,而值则可以是任意格式的数据,如字符串、整数、浮点数或序列化的复杂数据结构,但大小通常限制在1MB以内。

当应用程序需要存储数据时,它通过Memcached客户端库发送一个命令到Memcached服务器,指定要存储的键和对应的值。如果存储成功,Memcached会返回确认信息。如果数据已存在,Memcached将覆盖旧值。

对于数据访问,应用程序通过发送带有相应键的命令来请求数据。Memcached使用键在内存中查找对应的值,并将其返回给客户端。如果找不到数据,Memcached将返回一个“未找到”消息。

操作描述
存储数据应用程序通过客户端发送set命令,包含键、值和可选的生存时间(TTL)。
存储确认Memcached返回STORED确认数据已存储,或返回错误代码。
获取数据应用程序使用get命令,传入键,Memcached查找键并返回对应的值。
获取确认Memcached返回值或NOT_FOUND错误,表示键不存在或已过期。
删除数据应用程序使用delete命令,传入键,Memcached从内存中移除对应的键值对。
删除确认Memcached返回DELETED确认数据已被删除,或NOT_FOUND表示键不存在。
替换数据如果键已存在,使用replace命令替换现有值。
替换确认Memcached返回REPLACE确认数据已被替换,或NOT_STORED表示键不存在。
更新数据使用incrementdecrement命令在数值型值上进行原子性加减操作。
更新确认Memcached返回更新后的值或错误代码,如NOT_STOREDVALUE

 

2.2 分布式架构

     Memcached的分布式架构是其最强大的特性之一。在一个分布式环境中,数据被分割并存储在多台Memcached服务器上。这种架构不仅提高了数据的读写速度,还增加了系统的容错性和可扩展性。

    当数据存储时,Memcached使用哈希算法(通常是CRC32)来计算键的哈希值,然后根据这个哈希值决定数据应该存储在哪一台服务器上。这称为哈希环技术,确保了数据的均匀分布。

     客户端使用相同的哈希算法来确定数据的位置,从而可以直接向正确的服务器发出请求。这种设计消除了中心化的瓶颈,提高了系统的整体性能。

     如果某个服务器宕机或离线,Memcached的分布式特性意味着其他服务器仍然可以提供服务,虽然可能暂时无法访问存储在故障服务器上的数据。为了提高可用性,可以采用复制或分片策略,但这通常需要更复杂的架构和管理。

特性描述
哈希环使用CRC32或其他哈希算法将键映射到特定的服务器上,实现数据的均匀分布。
节点选择根据哈希值确定数据所在的节点,客户端直接向该节点请求数据。
负载均衡数据分布在多台服务器上,每台服务器承担相似的请求负载。
容错机制如果某节点不可用,请求将重定向至其他节点,可能暂时无法访问特定数据。
扩展性可以通过添加更多节点来扩展缓存容量和吞吐量,无需停机。
分布式更新当数据更新时,必须确保所有相关节点上的缓存数据同步更新,以避免数据不一致。
节点加入/离开节点加入或离开集群时,数据需要重新分配以保持负载均衡。
一致性哈希在节点变化时,使用一致性哈希算法尽量减少数据迁移量,减少系统中断时间。
2.3 数据过期机制

      Memcached支持数据的过期机制,这是通过设置一个生存时间(TTL,Time To Live)来实现的。当数据存储时,可以指定一个过期时间,单位为秒。一旦过期时间到达,数据将从缓存中自动删除,以便释放内存空间给新的数据。

      过期时间的设定是可选的,如果没有指定,数据将一直保留在缓存中,直到达到内存容量限制或显式删除。这种机制有助于防止缓存中存储过多的过时数据,同时也可以用来实现临时的缓存策略。

     值得注意的是,Memcached的数据过期不是实时的。在过期时间到达时,数据并不会立即被物理删除,而是标记为“过期”。只有当缓存空间不足,需要为新数据腾出空间时,Memcached才会清理过期的数据。这一过程称为“最近最少使用”(LRU,Least Recently Used)淘汰策略。

机制描述
生存时间(TTL)数据项在内存中存活的时间,以秒为单位,过期后数据自动从缓存中移除。
过期检查Memcached定期检查数据项是否过期,过期的数据项会被标记为无效。
LRU淘汰当缓存空间不足时,采用最近最少使用(LRU)策略淘汰过期或最久未使用的数据项。
清理策略清理过期数据项的过程是非实时的,通常在内存压力大时触发,以腾出空间给新的数据项。
异步过期数据项不会在过期时间到达的那一刻立即被删除,而是等待下一次清理周期才真正从缓存中移除。
手动清除应用程序可以显式地使用flush_all命令清除所有数据,或使用delete命令清除特定的数据项。

 

 

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

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

相关文章

13 IP层协议-网际控制报文协议ICMP

计算机网络资料下载:CSDNhttps://mp.csdn.net/mp_blog/creation/editor/140148186 为了更有效的转发IP数据报和提高交付成果的机会,在网际层使用了网际控制报文协议ICMP。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。ICMP不是高层协议数…

【系统架构设计师】十一、系统架构设计(层次架构风格|MVC|面向服务的架构风格|ESB)

目录 五、层次架构风格 5.1 两层C/S架构 5.2 三层C/S架构 5.3 三层B/S架构 5.4 MVC架构 5.5 MVP架构 5.6 MVVM架构 六、面向服务的架构风格 6.1 SOA特征 6.2 Web Service 6.2.1 关键技术 6.2.2 WEB Service 6.3 企业服务总线ESB 相关推荐 历年真题练习 五、层次…

[Linux]添加sudoers

之前我们讲过sudo这个命令,它可以让我们普通用户进行短暂的提权,上回我们讲完了vim 本篇是个短篇,目的就是让我们之后的学习中可以使用sudo命令。 首先我们先登录root用户 ls /etc/sudoer 我们需要改的就是上面的这个文件 vim /etc/sudoers 我们用vim打开 把光标移动到这…

类和对象(中)-- 类的六个默认成员函数

目录 1.构造函数 1.1构造函数的特性 1.2 默认构造函数 1.3补丁 ​2.析构函数 2.1析构函数的特性 2.2构造函数与析构函数的调用顺序 3.拷贝构造函数(复制构造函数) 3.1拷贝构造函数的特征 4.赋值运算符重载 4.1运算符重载 4.2类内重载运算符 …

ChatGPT 深度解析:技术驱动的智能对话

在当今科技飞速发展的时代,ChatGPT 无疑成为了最耀眼的明星之一。它以其令人惊叹的智能对话能力,引发了全球范围内的广泛关注和热议。 ChatGPT 背后的技术堪称精妙绝伦。它基于深度学习算法,通过对海量数据的学习和分析,从而能够理…

浅谈Git

一:什么是 git git一种开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 下图是 git 的一个工作流程简图 二:什么是 分布/集中式版本控制系统 软件开发过程中,要解决多人协作的问题,需要…

【Linux】常见指令(下)

【Linux】常见指令(下) 通配符 *man指令cp指令echo指令cat指令(简单介绍)cp指令 mv指令alias指令which ctrl ccat指令linux下一切皆文件 more指令less指令head指令tail指令管道 通配符 ‘*’ 通配符’ *‘,是可以匹配…

Linux(CentOS7)离线安装Redis6

版本 CentOS-7、redis-6 1、下载redis离线包 下载地址:http://download.redis.io/releases/ 2、选择安装包 redis-6.2.5.tar.gz 3、上传安装包至服务器 cd /usr/local/redis #进入目录,没有redis目录则自行创建 tar -zxvf redis-6.2.5.tar.gz #…

【信息收集】域名信息收集

域名介绍 域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。 DNS&#xf…

解决RuntimeError: Couldn‘t load custom C++ ops. This can happen if your PyTorch

问题描述 刚下好yolov8的代码,想测一下能否成果,果然没成功,报错如下 RuntimeError: Couldnt load custom C ops. This can happen if your PyTorch and torchvision versions are incompatible, or if you had errors while compiling tor…

【python】Pandas运行报错分析:SettingWithCopyWarning及其处理

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

通用图形处理器设计GPGPU基础与架构(三)

一、前言 前两篇已经介绍了 GPGPU 的背景 和 GPGPU 的编程模型相关的内容,本文将在 SIMT 计算模型的基础上,介绍 GPGPU 控制核心架构和微体系结构的设计。 二、CPU-GPGPU 异构计算系统 一个由 CPU 和 GPGPU 构成的异构计算平台如下图所示,GP…

《昇思25天学习打卡营第23天|ResNet50迁移学习》

文章目录 ResNet50迁移学习数据准备下载数据集 加载数据集数据集可视化 训练模型构建Resnet50网络固定特征进行训练训练和评估可视化模型预测 总结打卡 ResNet50迁移学习 在实际应用场景中,由于训练数据集不足,所以很少有人会从头开始训练整个网络。普遍…

摸鱼大数据——Kafka——kafka tools工具使用

可以在可视化的工具通过点击来操作kafka完成主题的创建,分区等操作 注意: 安装完后桌面不会有快捷方式,需要去电脑上搜索,或者去自己选的安装位置找到发送快捷方式到桌面! 连接配置 创建主题 删除主题 主题下的数据查看 数据显示问题说明 修改工具的数据显示类型 发…

Laravel :如何将Excel文件导入数据库

文章目录 一、前提二、使用2.1、新建一个导入文件2.2、新建一个控制器和方法,调用导入文件2.3、 新建一个页面,支持文件上传 一、前提 想要将excel内容入库,laravel有扩展可以使用,常用的扩展是maatwebsite/excel,安装步骤参考上一篇&#x…

校园工会体育报名小程序的设计

管理员账户功能包括:系统首页,个人中心,赛事公告管理,球员管理,球队信息管理,比赛信息,比赛报名管理 微信端账号功能包括:系统首页,比赛信息,比赛报名&#…

7月考研数学的保底进度,警惕三个误区!

误区1. 不恰当的课程选择和学习计划 尤其25张宇36讲大改版,一些同学感到焦虑,担心自己的课程选择不适合自己。 或者担心学习计划不够高效,影响最终的成绩。 课程选择,看3方面: 1. 覆盖是否全面? 2. 是否…

element-ui dialog 嵌套

dialog 内部嵌套 dialog,内层的 dialog 层级显示会遮罩在内容的 dialog 内容区域之上,内层 dialog 添加 append-to-body 属性即可,如官方文档:

网安小贴士(11)VPN类型

前言 VPN(Virtual Private Network,虚拟专用网络)类型多样,主要根据其使用的协议、应用场景以及实现方式等因素进行分类。以下是对VPN类型的详细概述: 一、按协议分类 根据使用的隧道协议,VPN可以分为以下几…

java设计模式(十五)命令模式(Command Pattern)

1、模式介绍: 命令模式(Command Pattern)是一种行为设计模式,其主要目的是将请求封装成一个对象,从而允许使用不同的请求、队列或者日志来参数化其他对象。这种模式使得命令的请求者和实现者解耦。 2、应用场景&…