1、memcached  高性能分布式内存对象缓存系统
2、目的:减轻数据库负载,提高基于动态数据库驱动网站的响应速度
3、数据格式:文本行
4、协议:memcache协议
5、存储方式:hashMap
6、缺点:重启memcache服务器后,存储的数据会消失。在数据持久化方面有所欠缺
7、内存分配机制:最初的版本就是采用mollc和free来获取内存,释放内存,这样会造成很多内存碎片
    最新的一般是采用slab allonation内存分配机制,首要目标就是防止出现很多内存碎片。
8、slab allonation  首先是一大块memcache的内存(默认是1M),这块内存被切分成很多chunk(这些chunk 大小可能相等,也可能不等);然后将大小相等的chunk分成一个组(slab allonation)。这些chunk是可以重复利用的。
9、slab存储原理:接收到客户端数据后,根据数据大小,选择合适的chunk,然后将数据存在里面。(memcached里面有一个列表,记录着哪些chunk是使用过的,哪些是未使用的)
10、slab存储机制的缺点:可能会造成内存浪费,如:将100KB的数据存储在128KB的chunk中
11、memcached调优,调节chunk的大小,使其接近于实际存储数据的大小;在memcachaed启动时,指定增长因子。默认为2,可以改为1.25或其他值。$memcached  -f  2  vv(是两个v不是w)
12、进入memcached后,通过status查看memcached的各种状态信息!
13、memcached删除数据的原理:memcached不会时时监视数据是否过期,而是在get数据的时候,校验数据是否过期。如果过期后,记录不会被删除,但是不可以被客户端看见,其内存空间可以重复使用。(这种方式成为 惰性期满 lazy expiration)
14、默认情况下,当memcached数据存储满后,新来数据需要插入时,就会根据最近最少使用原则(LRU lasted recently used),覆盖原先的数据;启动memcached时,通过以下参数 -M -m 1024禁用LRU原则,这时候如果存储空间满,就会报错。1024指的是memcached的最大内存,默认是64M;
15、memcached的键大小最大是250个字节,可以考虑基于二进制协议实现更大键 2的16次方个字节;
16、memcached的一个发展新方向就是支持外部引擎扩展,实现数据的持久化。
17、memcached服务器端并没有实现分布式功能,memcached的分布式是通过客户端实现的;这种分布式是memcached的最大特点。
    eg:假如有三个或者更多个memcached服务器,当应用程序set一个值时,首先会到memcached客户端,客户端会根据键来选择存储在哪个服务器上,当取值的时候,会使用相同的算法,计算该键值对会存储在哪个服务器上,然后到该服务器上取值。
        选择服务器算法1:根据键的哈希值,除以服务器的台数,根据余数选择服务器。缺点:当添加或删除服务器后,使用此算法就不能获取原先保存的数据。
        选择服务器算法2:consistent hashvalue算法,讲一个圆顺时针,等间距标注,0~2^32;计算出每台服务器的hash值,放到圆对应的位置上。然后计算每个key的hash值,放到圆上,顺时针找到第一个memcache服务器。这样增加一台服务器,影响的仅仅是这台服务器和其逆时针服务器之间的键值对。
18、memcached服务器几乎不占用CPU
19、memcached启动时分配的内存,是slab分配器存储数据所用内存,slab本身运行也需要内存,假如一台机器4G内存,建议分配内存不超过3G,否则可能发生内存交换。
20、memcached与memcache的区别:服务器端都是一样的称作memcached进程,客户端不同,客户端有两个库 一个是memcache另一个是memcached; memcached是一个比较新的库,建议使用;memcache已经好久不更新了。很多语言操作memcached服务器都是通过封装这两个库完成的。

Memcached 缓存服务器介绍的更多相关文章

  1. memcached 缓存服务器

    Memcached 缓存服务器 Memcached 是高性能的分布式内存缓存服务器. 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度.提高可扩展性. 主要特点 ...

  2. Linux下使用Magent+Memcached缓存服务器集群部署

    1.编译安装libevent  cd /root/soft_hhf/  wget http://cloud.github.com/downloads/libevent/libevent/libeven ...

  3. 第34 memcached缓存

    1.缓存数据库 缓存:将数据存储在内存中,只有当磁盘胜任不了的时候,才会启用缓存. 缺点:断电数据丢失(双电),用缓存存储数据的目的只是为了应付大并发的业务,至于数据存储及可靠性不要找他了.   数据 ...

  4. php扩展memcache和memcached区别?以及memcached软件的介绍

    引用“http://www.vicenteforever.com/2012/03/memcache-different-memcached/” memcached是一个软件,而PHP包括了memcac ...

  5. 二、NOSQL之Memcached缓存服务实战精讲第一部

    1.Memcached是一套数据缓存系统或软件. 用于在动态应用系统中缓存数据库的数据,减少数据库的访问压力,达到提升网站系统性能的目的:Memcached在企业应用场景中一般是用来作为数据库的cac ...

  6. memcached基于socket访问memcache缓存服务器

    memcached基于socket访问memcache缓存服务器 操作memcache常用三种方法: .memcache基于php_memcache.dll扩展(php扩展) .memcached基于 ...

  7. 受教了,memcache比较全面点的介绍,受益匪浅,适用memcached的业务场景有哪些?memcached的cache机制是怎样的?在设计应用时,可以通过Memcached缓存那些内容?

    基本问题 1.memcached的基本设置 1)启动Memcache的服务器端 # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 ...

  8. Django分析之使用redis缓存服务器

    时间长没有更新了,这段时间一直忙着一个项目,今天就记录一个现在经常会用到的技术吧. redis相信大家都很熟悉了,和memcached一样是一个高性能的key-value数据库,至于什么是缓存服务器, ...

  9. Windows系统下Memcached缓存系列二:CouchbaseClient(c#客户端)的详细试用,单例模式

    在上一篇文章里面 ( Windows系统下Memcached缓存系列一:Couchbase(服务器端)和CouchbaseClient(c#客户端)的安装教程 ),我们介绍了服务器端的安装和客户端的安 ...

随机推荐

  1. 区块链Readme.md

    #Welcome to Azure Blockchain Projects This Repo host Azure related blockchain and distributed ledger ...

  2. C语言:全局变量在多个c文件中公用的方法 [转]

    用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用. 举例说明:项目文件夹project下有main. ...

  3. Dokan官方说明文档

    Dokan 库Copyright(c) Hiroki Asakawa http://dokan-dev.net/en 什么是Dokan库================================ ...

  4. linux设置环境变量

    设置 Linux 环境变量可以通过 export 实现,也可以通过修改几个文件来实现,有必要弄清楚这两种方法以及这几个文件的区别. 通过文件设置 Linux 环境变量 首先是设置全局环境变量,对所有用 ...

  5. ACM第一天研究懂的AC代码——BFS问题解答——习题zoj2165

    代码参考网址:http://blog.csdn.net/slience_perseverance/article/details/6706354 试题分析: 本题是研究red and black的一个 ...

  6. NSDictionary 的内部实现

    NSDictionary是IOS中使用的一种key-value容器,参考cocotron的源代码,NSDictionary使用NSMapTable实现. NSMapTable同样是一个key-valu ...

  7. Android 安装镜像

    1. 关机 2. 按住音量减键和电源键,直到进入fastboot模式 3. 连接上PC 4. PC端输入sudo fastboot devices验证已识别到设备 5. PC端输入sudo fastb ...

  8. Gym 100553B Burrito King 无脑背包

    题意就是你有n和m两个上限 吃一个东西会同时增加两个东西 m的值不能超过给定的m 问最后的n m值和每个东西吃了多少 贪心一下就好了 算一下性价比 从最大的开始吃 直到吃满了m n也一定是最大了 只是 ...

  9. css3部分属性兼容性别扭写法(因为很多我就叫他别扭了,希望全面早早支持css3吧)

    /*圆角class,需要设置圆角的元素加上class名称*/ .roundedCorners{ -webkit-border-radius: 10px;/*webkit内核浏览器*/ -moz-bor ...

  10. ZIP文件解压

    public class DZip { /// <summary> /// 压缩为ZIP文件 /// </summary> public void Zip(string dir ...