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. springMVC+Java验证码完善注册功能

    这篇文章简单的写了一个java验证码,为之前写过的springMVC注册功能加上验证码,验证码的作用就不多说了,防止机器人程序恶意注册什么的.. 其中User.java,加上了password和cod ...

  2. JUnit test case 执行顺序

    转自:JUnit中按照顺序执行测试方式 很多情况下,写了一堆的test case,希望某一些test case必须在某个test case之后执行.比如,测试某一个Dao代码,希望添加的case在最前 ...

  3. Node.js:包

    概要:本篇博客主要介绍了node.js中的包 包是在模块基础上更深一步的抽象,Node.js的包类似于C/C++的库函数或者Java/.Net的类库.它将某个独立的功能封装起来,用于发布.更新.依赖管 ...

  4. 使用NGUI实现拖拽功能(拼图小游戏)

    上一次用UGUI实现了拼图小游戏,这次,我们来用NGUI来实现 实现原理 NGUI中提供了拖拽的基类UIDragDropItem,所以我们要做的就是在要拖拽的图片上加一个继承于该类的脚本,并实现其中的 ...

  5. Marble 添加自定义Layer

    #include <marble/MarbleWidget.h> #include <marble/MarbleMap.h> #include <marble/Marbl ...

  6. 一步一步学EF系列【6、IOC 之AutoFac】

    前言 之前的前5篇作为EF方面的基础篇,后面我们将使用MVC+EF 并且使用IOC ,Repository,UnitOfWork,DbContext来整体来学习.因为后面要用到IOC,所以本篇先单独先 ...

  7. poj 1411 Calling Extraterrestrial Intelligence Again

    题意:给你数m,a,b,假设有数p,q,满足p*q<=m同时a/b<=p/q<=1,求当p*q最大的p和q的值 方法:暴力枚举 -_-|| and 优化范围 我们可以注意到在某一个m ...

  8. NOIP2011-普及组复赛模拟试题-第一题-NBA总冠军

    题目背景 Background 一年两度的期末考要到来了!!  题目描述 Description   又要到考试了,Ljw决定放松一下,就打开电视,看见了篮球赛,他立即想到了每年的NBA总冠军队伍.由 ...

  9. 【卷一】正则一 之re.split

    有时候,用re.split()匹配字符串会比findall,search, match等 正则表达式对象方法方便简洁很多! 参考: <Python核心编程(3rd)>—p23 如果给定分隔 ...

  10. 【入门一】一些简单的C程序及VS的安装

    实例1 用 printf 函数打印字符串 # include <stdio.h> // 预处理指令,结尾不加 ';' int main(void) // int表示该函数将返回一个整数值, ...