为了加快文件访问速度且提供多个使用者、需要在内存中建立内存缓存数据的管理减小读写磁盘的次数及保证数据的更新、因为需要使用cache缓存。

 
1、Memcached 主要特性
a、数据仅存在于内存中,宕机或重启数据将全部失效
b、内容数据达到启动时设定内存指定值后、基于LRU算法删除缓存,LAZY模式、可指定最大内存用量。
c、实际瓶颈在于网络连接、占应较少的CPU资源
d、服务器端无分布式功能(C开发)、取决于客户端的实现(php、C#、java)、可布署多台服务器,访问时做个均衡策略如根据IP分配连接负载。
e、存储的节点数据键名250字节、键值限制在1MB、只适合普通字符串、作为小规模的数据分布式平台是十分有效果.
f、32位机器单进程使用最大内存2G、可分多个端口开启多进程支持、64位机器可认为无上限
 
2、数据直接放到内存需要解决的问题:
a、不能进行分布式扩展
b、缺乏一个有效的信息过期机制
c、多个并发同时使用共享使用失效机制
d、文件fd无法异步法、无法加入异步IO高速并发访问体系中
 
3、分布式集群搭建
a、客户端通过memcached私有通信协议与守护进程通信
b、nginx通过upstream协议通信、访问服务器未命中则只能访问memcached客户端获取数据并将数据主动写入memcached服务器。
c、缺乏认证以及安全管制、放在防火墙后
d、客户端通过一致性hash构建分布式cache系统、同时针对机器及缓存数据的key做hash、利用虚拟结点减小最小数据迁移。
 
 
4、如何添加与删除条目
a、通过set/add/replace添加数据及设定条目失效时间及数据长度
b、delete删除
c、信息访问只提供简单的缓存KV类型数据结构
d、可利用flush_all清空所有键值、标记所有item失效、内存可复用。
 
5、服务器扩容及备灾
a、服务器可随时扩容、需支持动态修改访问策略
b、服务器宕机则缓存数据全部失败、无法备灾
 
6、内存效率
采用 Slab Allocator的机制分配、管理内存。按照增加因数按照预先规定的大小、将分配的总内存分割成特定的长度块。
a、根据最小空间损失原则、分配最接近的slab空间
b、执行get才检查时间戳、避免监控耗费cpu资源
c、新对象加入还是找最接近slab空间、而不能使用其它slab,只能重新分配page,内存浪费严重。
d、内存不足时则启动LRU删除记录、可能删除未过期记录,缓存利用率下降。
 
几个术语:
Page:分配给Slab的内存空间,默认是1MB。分配给Slab之后根据slab的大小切分成chunk。
Chunk:用于缓存记录的内存空间。
Slab Class:特定大小的chunk的组。
Growth Factor:增长因数,默认为1.25
 

Memcached特性及优缺点的更多相关文章

  1. PHP文件缓存与memcached缓存 相比 优缺点是什么呢【总结】

    如果不考虑其他任何问题,只比较速度的话,那肯定是mem快,但他们各有优缺点.文件缓存优点:1.由于现在的硬盘都非常大,所有如果是大数据的时候,放硬盘里就比较合适,比如做一个cms网站,网站里有10万篇 ...

  2. [js高手之路]构造函数的基本特性与优缺点

    上文,通过基本的对象创建问题了解了构造函数,本文,我们接着上文继续了解构造函数的基本特性,以及优缺点. 每个对象上面都有一个constructor属性( 严格意义上来说,是原型上的,对象是通过查找到原 ...

  3. 面试题常考&必考之--js闭包特性和优缺点 (外加小例子)

    当内部函数被返回到外部并保存时,一定会产生闭包.闭包会产生原来的作用域链,不释放. 闭包,可以理解为,写一个函数,然后产生闭包的这种现象. 概念: 基础: 主要是:add    reduce  被返回 ...

  4. Memcached概念、作用、运行原理、特性、不足简单梳理(1)

    大家可能对memcached这种产品早有了解,或者已经应用在自己的网站中了,但是也有一些朋友从来都没有听说过或者使用过.这都没什么关系,本文旨在从各个角度综合的介绍这种产品,尽量深入浅出,如果能对您现 ...

  5. Linux实战教学笔记32:企业级Memcached服务应用实践

    一, Memcached介绍 1.1 Memcached与常见同类软件对比 (1)Memcached是什么? Memcached是一个开源的,支持高性能,高并发的分布式内存缓存系统,由C语言编写,总共 ...

  6. Memcached原理

    Memcached是一套高性能的.分布式内存对象缓存系统.它由C写成,以Key/Value的方式将数据储存在内存中. 一.Memcached特性 Memcached作为高速运行的分布式缓存服务器,具有 ...

  7. (转)iOS Wow体验 - 第五章 - 利用iOS技术特性打造最佳体验

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第五章译文精选,其余章节将陆续放出.上一篇:Wow ...

  8. Memcached的基础梳理

    1 .Memcached 概念 官方解释如下: What is Memcached? Free & open source, high-performance, distributed mem ...

  9. Session会话保持机制的原理与Tomcat Session共享的几种实现方式(Session Cluster、memcached+MSM)

    一.Session的定义 在计算机科学中,特别是在网络中,session是两个或更多个通信设备之间或计算机和用户之间的临时和交互式信息交换.session在某个时间点建立,然后在之后的某一时间点拆除. ...

随机推荐

  1. 洛谷P1823 [COI2007] Patrik 音乐会的等待

    https://www.luogu.org/problemnew/show/P1823 自己只会一个log的 设取的人的位置分别是l,r(l<r) 这个做法大概是考虑枚举r,设法对于每个r求出有 ...

  2. 2个rman自动恢复的脚本

    ### scripts 1--the scirpt is used for restore db from vcs to a point to time recovery--and the targe ...

  3. 安装dubbo的监控中心dubbo-monitor-simple

    1.下载dubbo-monitor-simple 2.修改配置指定注册中心地址 进入dubbo-monitor-simple\src\main\resources\conf目录修改 dubbo.pro ...

  4. 关于ViewPager高度自适应(随着pager页的高度改变Viewpager的高度)

    该博客借鉴的是某位大神的博客 我只是写一下用后感和总结 博客链接地址 http://blog.csdn.net/qq_34972666/article/details/52386999?locatio ...

  5. Bluefish

    Bluefish标榜其自身是“一款为熟练的Web设计员和程序员而设的编辑器,但它的UI却很直观,任何初学者都能够很快上手,并在不断地积累中发现和掌握它的其它功能.   Bluefish标榜其自身是“一 ...

  6. BS3 多级菜单

    <div class="container"> <div class="row"> <h2>Multi level drop ...

  7. as 开启代码混淆和混淆规则

    app的builde.gradle的文件下,buildTypes节点添加release节点,minifyEnabled属性表示是否开启混淆,proguardFiles表示混淆依赖的文件,具体开启方法如 ...

  8. 使用POI创建word表格-在表格单元格中创建子表格

    要实现的功能如下:表格中的单元格中有子表格 实现代码如下: XWPFParagraph cellPara = row.getCell(j).getParagraphArray(0); //row.ge ...

  9. FusionCharts 3.2.1 常用用法

    一.XML格式 1.实例化一个FusionCharts 对象 var member_fund_count_pie = new FusionCharts("FusionCharts3.2.1/ ...

  10. 再用python写一个文本处理的东东

    朋友遇到一点麻烦,我自告奋勇帮忙.事情是这样的: - 他们的业务系统中,数据来自一个邮箱: - 每一个邮件包含一条记录: - 这些记录是纯文本的,字段之间由一些特殊字符分隔: - 他们需要从邮箱中批量 ...