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. 理解WebKit和Chromium(电子书)

    前言   基础篇 WebKit, WebKit2, Chromium和Chrome介绍 WebKit和Blink WebKit和Chromium代码目录结构介绍 WebKit和Chromium功能模块 ...

  2. openwrt杂记

    /etc/config/wireless是在boot启动时生成的. 代码在/etc/init.d/boot中,如下: /sbin/wifi detect > /tmp/wireless.tmp  ...

  3. Java常用集合类(1)

    一.HashMap 参考文章: http://yikun.github.io/2015/04/01/Java-HashMap%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E ...

  4. Zeppelin使用phoenix解释器

    Interpreters设置

  5. asp.net接收发送的xml字符串数据

    最近研究为新的接口,发现发送的消息的格式为xml类型.之前接口接触的多是接收json类型的数据,可以直接通过Request["Key"]/Request.QueryString[& ...

  6. java中的基本数据类型的转换

    本文参考了如下两篇文章: https://my.oschina.net/joymufeng/blog/139952 http://www.cnblogs.com/lwbqqyumidi/p/37001 ...

  7. 【VMware】VMware Workstation中虚拟机网络配置

    一直用的vmware的虚拟机以及UVP还有cirtix的虚拟机,然后对vmware workstation却一窍不通,这个怎么了得,下面介绍一下我学习中遇到的问题及解决办法. 一.准备工作: vmwa ...

  8. C++ inline和#define宏的区别

    (1)什么是内联函数? 内联函数是指那些定义在类体内的成员函数,即该函数的函数体放在类体内. (2)为什么要引入内联函数?当然,引入内联函数的主要目的是:解决程序中函数调用的效率问题.另外,前面我们讲 ...

  9. mac 文件路径问题

    Finder栏显示访问路径 操作步骤: 打开“终端”(应用程序->实用工具),输入以下两条命令: defaults write com.apple.finder _FXShowPosixPath ...

  10. JavaScript(10)——Ajax以及跨域处理

    Ajax以及跨域处理 哈哈哈,终于写到最后一章了.不过也还没有结束,说,不要为了学习而学习,恩.我是为了好好学习而学习呀.哈哈哈.正在尝试爱上代码,虽然有一丢丢的难,不过,我相信我会的! [Ajax] ...