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. sublime text3编译运行C,Java程序的一些配置

    环境:linux 64位 桌面环境: gnome Java编译运行 (1)Preferences --> Browse Packages --> 在该文件夹下新建build文件如: Myj ...

  2. apache动态添加模块

    Apache已经安装完毕并投入运行,但是后来却发现部分模块没有加载,当然有两个方法: 1. 一是完全重新编译Apache, 再安装 2. 编译模块为SO文件,使用LoadModule指令加载扩展模块. ...

  3. LeetCode OJ 121. Best Time to Buy and Sell Stock

    Say you have an array for which the ith element is the price of a given stock on day i. If you were ...

  4. UVALive 6672 Bonus Cards 概率dp

    题意呢 就是有两种售票方式 一种是icpc 一种是其他方式 icpc抢票成功的概率是其他方式的2倍…… 这时 一个人出现了 他通过内幕知道了两种抢票方式各有多少人 他想知道自己如果用icpc抢票成功的 ...

  5. Visual Studio 2010/2013 UTF8编码调试时显示中文

    VisualStudio 2010 SP1环境 1.设置string默认编码为utf8,只需要在文件头部加入以下代码 #pragma execution_character_set("utf ...

  6. linux 安装与启动nginx

    linux系统为Centos 64位 一.去http://nginx.org/download/上下载相应的版本下载nginx-1.8.0.tar.gz(注:还有更高版本的). 二.解压 tar -z ...

  7. .h 与 .hpp 文件

    hpp,顾名思义等于.h加上.cpp,在boost.Xerces等开源库中频繁出现,偶在机缘巧合之下,学得一招半式,遂记录如下,以供参考学习.     hpp,其实质就是将.cpp的实现代码混入.h头 ...

  8. 【ADT】队列的基本C语言实现

    queue.h #ifndef _QUEUE_H_ #define _QUEUE_H_ #include <stdbool.h> #define MAXQUEUE 10 // 定义队列类型 ...

  9. Ubuntu iptalbes 保存配置

     ubuntu 保存防火墙命令,iptables方式:1.iptables 配置好策略2.iptables-save > /etc/network/iptables.up.rules ,配置的策 ...

  10. css sprite的使用心得

    提高网页显示速度最有效的一个方法是减少页面的HTTP请求次数,为了减少HTTP请求次数,最直接有效的方法是使用精灵图片(CSS sprites),精灵图片是把许多图片放到一张大图片里面,通过CSS来显 ...