memcache的内存管理与删除机制

memcache图形管理工具 立即下载

内存碎片

在不断的申请和释放内存时候(如C语言中malloc、free),在内存中往往会出现一些很小的内存片段,无法再使用,这种空闲的内存被称为内存碎片。

memcache内存管理

memcache使用slab allocator机制来内存管理。
slab allocator原理:先将内存划分为多个slab class仓库,每个仓库切分成不同尺寸的小块chunk。
需要存储内容时候,判断内容大小,为其选择合理的仓库。如下图:
这里写图片描述

memcache如何选择合适的chunk

首先我们可以通过如下命令,查看memcache中chunk。

memcache -vvv

效果如下图
这里写图片描述

现在有114byte内存需要存放,首先memcache会检查chunk组,找到内容大于114byte且二则差的绝对值最小的那个chunk。如果此时128chunk(即slab class 3 里面的chunk)已经用完,此时并不会去使用大小为160的chunk,而是将chunk为122里面的旧数据踢掉,以备使用。
这里写图片描述

固定大小的chunk带来的内存浪费

在上面,我们存储的是114byte,但是使用的却是128byte。由于slab allocator机制中,分配的chunk大小事‘固定’的,应此可能会造成内存的浪费。对于chunk 空间的浪费问题,无法彻底解决,只能缓解该问题。

chunk增长因子调优

memcached 在启动时可以通过f选项指定Growth Factor 因子, 并在某种程度上控制slab 之间的差异. 默认值为1.25. 但是,在该选项出现之前,这个因子曾经固定为2,称为”powers of 2”策略。
增长因子为3时候
这里写图片描述
增长因子为2.25
这里写图片描述
增长因子为1.25
这里写图片描述
备注:当f=1.25 时,从输出结果来看,某些相邻的slab class 的大小比值并非为1.25,可能会觉得有些计算误差,这些误差是为了保持字节数的对齐而故意设置的。

memcache 的过期数据惰性删除

当某个值过期后,并没有从内存删除, 因此,stats 统计时, curr_item 有其信息。 当某个新值去占用他的位置时,当成空chunk 来占用。 当get 值时,判断是否过期,如果过期,返回空,并且清空, curr_item 就减少了。即这个过期,只是让用户看不到这个数据而已,并没有在过期的瞬间立即从内存删除。这个称为惰性失效。好处是节省了cpu 时间和检测的成本。

memcache中lru删除机制

在操作系统系统中,常用的删除机制有fifo、lru删除
lru:least recently used 最近最少使用
fifo:first in,first out 最先插入,最先离开
原理: 当某个单元被请求时,维护一个计数器,通过计数器来判断最近谁最少被使用。
注: 即使某个key 是设置的永久有效期,也一样会被踢出来!
即–永久数据被踢现象。

STM32F103(二十三)通用同步异步收发器(USART) 学习板:STM32F103ZET6 往期博客: STM32F103五分钟入门系列(一)跑马灯(库函数+寄存器)+加编程模板+GPIO总结 STM32F103五分钟入门系列(二)GPIO的七大寄存器+GPIOx_LCKR作用和配置 STM32F103五分钟入门系列(三)GPIO的常用库函数使用方法总结+一个网络上的误区 STM32F103五分钟入门系列(四)蜂鸣器实验(库函数+寄存器) STM32F103五分钟入门系列(五)按键实验(库函数+寄存器) STM32F103五分钟入门系列(六)时钟框图+相关寄存器 阅读详情

相关推荐

手把手教你用Copilot插件在Obsidian里免费接入DeepSeek-R1(附硅基流动API密钥获取)

本文详细介绍了如何通过Copilot插件在Obsidian中免费接入DeepSeek-R1模型,实现智能知识管理。从硅基流动API密钥获取到插件配置,再到高级功能调优和实战应用技巧,手把手教你打造AI驱动的个人知识库。

weixin_33686714的博客 2793

memcache 清缓存

1、telnet开启控制面板-程序和功能-打开或关闭windows功能-勾选“telnet服务器”、“telnet客户端”-确定2、memcache 清缓存命令telnet ip portflush_allquit

sinat_28904949的博客 449

用Java实现森林冰火人游戏

g.drawString("游戏结束", CELL_SIZE * COLS / 2 - 100, CELL_SIZE * ROWS / 2);g.drawString("难度级别: " + difficultyLevel, 10, CELL_SIZE * ROWS + 60);g.drawString("生命值: " + playerHealth, 10, CELL_SIZE * ROWS + 20);setTitle("森林冰火人");

2401_82778412的博客 1734

php下memcache清理过期缓存内容,清除memcache中的缓存一些方法总结_PHP教程

有时我在测试或其它应用时希望能快速的清除memcache缓存,下面我来总结了几种清除memcache中的缓存的一些方法,希望方法对大家有所哦以前有同事需要我清除memcache缓存,我总是直接使用kill命令结束掉这个进程,后来才知道有更简单的方法,来清除memcachd的缓存,记录一下,以备不时之需:1.首先使用ssh命令登录到memcached所在服务器,命令如下:代码如下#ssh root@...

weixin_34091081的博客 407

GPS定位不准?可能是GDOP在作怪!手把手教你优化卫星几何分布

本文深入解析了GPS定位精度不佳的常见原因——几何精度因子GDOP。通过剖析卫星几何分布对定位误差的放大效应,文章提供了从理解GDOP、PDOP、HDOP等关键指标,到使用专业APP实时诊断卫星天空图,再到利用在线工具提前规划最佳定位时机的完整实战指南。旨在帮助户外爱好者、无人机飞手及专业用户主动优化卫星几何条件,从而显著提升定位可靠性。

weixin_29062823的博客 306

从零构建机械臂规划栈:Pinocchio、OMPL与Ruckig的工程化融合实践

本文详细介绍了如何从零构建机械臂规划栈,通过融合Pinocchio、OMPL和Ruckig三大核心组件,实现高性能的机械臂运动规划与轨迹生成。文章深入探讨了技术选型、工程架构设计及实战优化技巧,特别针对逆解、路径规划和轨迹平滑等关键环节提供了实用解决方案,适用于工业场景中的高实时性需求。

weixin_29072299的博客 433

memcache清理缓存

cd / ==> cd app/support/memcached-1.4.22/ //进入到memcached路径下 ==> pkill memcached //关闭memcached ==> cd bin ==> ll //进入memcac...

RanGe的博客 435

【人工智能】全面盘点国内AI九大模型:各擅胜场的智能先锋(豆包、文心一言、讯飞星火、通义千问、Kimi、智谱清言、腾讯元宝、秘塔、天工AI)

追求性价比与全能:选豆包,适合个人与中小企业日常使用;侧重中文创作与理解:选文心一言,文学与商业文案创作首选;需要专业语音交互:选讯飞星火,智能客服、车载场景必备;看重生态与多场景:选通义千问,适配电商、办公等企业需求;处理超长文本任务:选Kimi,文档分析、学术研究的利器;专注深度推理创作:选智谱清言,学术与创意写作的伙伴;依赖腾讯生态协同:选腾讯元宝,日常轻量需求的便捷之选;深耕法律学术领域:选秘塔,专业文本处理的权威工具;布局前沿技术体验:选天工AI,享受接近国际顶尖的智能服务。

奶爸的编程之路,也就一周冷个三天 1121

Memcached入门【三】---------内存管理与删除机制

“既然memcached是内存型的nosql,那么内存的合理使用自然是这项技术的核心。” 一个系统上动态分配内存,程序不断的申请和释放内存的过程中,会形成一些小的内存片段,无法利用。这种空闲,但是无法利用内存的现象,成为内存碎片化。例如假设当某个用户请求一个 33 字节的内存块时,因为没有适合大小的内存(有时候的内存可能是系统预设好的),所以它可能会获得 45字节的内存块、50字节的等...

Tacks的博客 385

Data+AI━━数仓建模的智能进化之路!

Data+AI━━数仓建模的智能进化之路!

ith321的博客 1744

各向同性、VTI、TTI以及双相介质波场数值模拟

各位读者,大家好!在今天的文章中,我将介绍关于波场数值模拟中的各向同性、VTI(垂直横向等参数介质)、TTI(倾斜横向等参数介质)以及双相介质的基本概念。同时,我也会提供一些基础的Fortran代码片段,供大家了解和学习。

qq_38334677的博客 1707

Memcache的内存管理机制

1.Memcached预热理念及集群节点正确重启方法 Memcached预热理念 当需要大面积重启Memcached时,首先要在前端控制网站入口的访问流量,然后,重启Memcached集群并进行数据预热,所有数据都预热完毕之后,在逐步放开前端网站入口的流量。 为了满足Memcached服务数据可以持久化存储的需求,较早期Sina网基于memcached服务开发了一款NoSQL软件,名字Memcac...

cangqiong_xiamen的博客 587

第20期-英伟达笔试题型解析

英伟达作为AI领域的缔造者及硬件基石,是这几年最为炙手可热的公司。英伟达以其高性能GPU设计闻名,硬件工程师岗位的招聘通常包括笔试和技术面试,考察领域涵盖数字电路设计、处理器架构、嵌入式系统和信号处理等。通过搜索公开平台,收集了候选人的面试经历和相关技术问题,,通过分析公开平台收集的笔试面试经验,结合英伟达的GPU架构特点,整理出可能涉及的典型题目,并提供详细解析。 以下是基于英伟达(Nvidia)硬件工程师笔试题型的解析与总结,涵盖核心知识点、解题思路及案例分析。

启芯硬件的博客 746

MEMCACHE的内存管理和删除策略

一.内存碎片 在不断的申请和释放内存的时候,实际上会有一些很小的碎片空间没有使用价值,那么这就是内存碎片(就好像GC在复制-清除的时候,会出现内存碎片的不足,是同一个道理)。 二.MEMCACHE的内存管理 1.内存管理的机制是:slab-allocator:就是说,会将内存划分成多个的slab-class的仓库,而每个仓库又含有多个不同大小的chunk。当进行申请内存时,会...

weixin_30241919的博客 144

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Memcache内存管理

内存碎片化在不断malloc和free操作,会形成很小的内存的片段,我们无法继续利用。Memcache管理内存方法slab allocator机制 将内存划分为数个slab class仓库 各个仓库切分成不同尺寸的小块(chunk) 需要存放内容的时候,需要先判断内容的大小,为期选择合理的仓库存放memcache保存着slab class在空闲时chunk列表,存放时根据列表进行分配 (最优

wwhhff11 429

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

深入研究memcache 特性和限制

特性和限制 在 Memcached中可以保存的item数据量是没有限制的,只要内存足够 。 Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启多个Memcached进程,最大30天的数据过期时间,设置为永久的也会在这个时间过期 常量REALTIME_MAXDELTA 60*60*24*30控制最大键长为250字节,大于该长度无法存储 常量KEY_MAX_LENGTH

ydwei918的专栏 566

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

memcache的用法与常识

memcache常用的选项 -p  端口号 -m  制定占多大内存 默认是64 -f  增长因子  默认是1.25 -u  用哪个用户 -c  可以连接的程序   默认是1024 -d  是后台运行 memcache的启动 memcached.exe -m 64 -p 11211 -vvv memcached的连接 打开telnet 命令格式:telnet host

1262

详解memcache内存管理

Memcache使用了Slab Allocator的内存分配机制:按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题 。这篇Memcache教程详细为大家讲解了内存管理。 Memcache的存储涉及到slab,page,chunk三个概念  1.Chunk为固定大小的内存空间,默认为96Byte。  2.page对应实际的物理空间,1个page为1M。  3

qq_32506555的博客 310

memcache的简单介绍

Memcache使用了Slab Allocator的内存分配机制:按照预先规定的大小,将分配的内存分割成特定长度的块,以 完全解决内存碎片问题 Memcache的存储涉及到slab,page,chunk三个概念 1.Chunk为固定大小的内存空间,默认为96Byte。 2.page对应实际的物理空间,1个page为1M。 3.同样大小的chunk又称为slab。 Memcached再启

天狗追月的博客 491

Memcache存储机制与指令汇总

1、memcache基本简介   memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。 Memcache的运行图: Memcache的特征 memcached作为高速运行的分布式缓存服务器,具有以下的特点。   1、基于C/S架构协议简单   memcached的服务器客户端通信并...

weixin_30535043的博客 66

Memcache储存

Memcache使用了Slab Allocator的内存分配机制:按照预先规定的大小,将分配的内存分割成特定长度的块,以 完全解决内存碎片问题 Memcache的存储涉及到slab,page,chunk三个概念 1.Chunk为固定大小的内存空间,默认为96Byte。 2.page对应实际的物理空间,1个page为1M。 3.同样大小的chunk又称为slab。 Memcached再启

209

Memcache存储数据

Memcache使用了Slab Allocator的内存分配机制:按照预先规定的大小,将分配的内存分割成特定长度的块,以 完全解决内存碎片问题 Memcache的存储涉及到slab,page,chunk三个概念 1.Chunk为固定大小的内存空间,默认为96Byte。 2.page对应实际的物理空间,1个page为1M。 3.同样大小的chunk又称为slab。 Memcached再启

zhxp_870516的专栏 1591

Memcache的数据存储分析

转自: http://blog.youkuaiyun.com/zhxp_870516/article/details/8651538   Memcache使用了Slab Allocator(区域分配或者板快分配)的内存分配机制:按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题 Memcache的存储涉及到slab,page,chunk三个概念 1.Chunk(块)

luckykapok918的专栏 826

Memcache存储数据原理(转自http://blog.youkuaiyun.com/hsd2012/article/details/51464847)

内存碎片 在不断的申请和释放内存时候(如C语言中malloc、free),在内存中往往会出现一些很小的内存片段,无法再使用,这种空闲的内存被称为内存碎片。 memcache内存管理 memcache使用slab allocator机制来内存管理。  slab allocator原理:先将内存划分为多个slab class仓库,每个仓库切分成不同尺寸的小块chunk。  需要存

liuzhidan123__的博客 372
上一篇: Mysql中LAST_INSERT_ID()的函数使用详解
下一篇: PHP的error_reporting错误级别变量对照表
我爱默小兜
博客等级 码龄14年 387粉丝 266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值