memcached定义 

  memcached 是一套分布式的高速缓存系统,被广泛应用于应用系统的缓存层来提升应用程序的访问速度;memcache缺乏认证以及安全管制,这表明应将memcached服务器放置在防火墙后;memcached的API使用32比特的循环冗余校验(CRC-32)计算键值后,将数据分散在不同的服务器上。当表格满了以后,接下来新增的数据会以LRU机制替换掉。由于memcached通常只是当作缓存系统使用,所以使用memcached的应用程序在写回较慢的系统时(像是后端的数据库)需要额外的代码更新memcached内的数据;memcached的缓存是基于内存的,因此不建议使用memcached缓存复杂的对象

  通过定义可知,使用memcached可以高速的缓存频繁访问的对象,从而减轻存储系统(如关系型数据库,磁盘等)的访问负担;其次,memcache缓存的内容是在内存中,访问速度快,可以为应用系统实时响应提供依据。

memcached适用于什么情况

  1. 底层数据库压力大,通过memcached可以将频繁访问的数据对象进行缓存,减少对底层数据库的访问来达到减轻数据库压力,使数据库有时间和处理能力去处理其他后台逻辑运算。

  3. 对象变化周期长,也就是说对象长时间不进行修改,可以将这些对象缓存到memcached中,供业务快速访问。而对于对象变化比较频繁的,不建议memcached来缓存,因为memcached的访问很快,而且没有事务来控制数据一致性,所以时常导致缓存对象与时间保存对象不一致的情况。

memcached分布式的优势

  memcached作为缓存层,需要缓存的内容会越来越多,当一台服务器无法承受所有缓存的内容时,就需要考虑将memcache调整为分布式,通过多台服务器来分担缓存的压力。memcached分布式的优势有哪些呢:

  1. 客户端担当分布式的master,通过客户端的分布函数(默认哈希取余的方式)来将缓存的key分散到不同服务器上。至于为什么客户端担当分布式的master,是由于只要分布函数一致,那么不同客户端都会将相同的key会分配到同一台服务器上,而且master的职责比较单一(就是根据key得到数据所在服务器)。

  2. memcached分布式集群上某台服务器宕机,客户端访问的缓存恰巧存储在宕机的服务器上时,缓存层被穿透去底层存储层读取数据,并将读取的内容缓存到未宕机的服务器上(分布方式去掉宕机的服务器,然后根据哈希取余的方式确定新的服务器)。

  3. memcached分布式集群上宕机的服务器修复上线后,客户端访问的缓存能访问该台宕机的服务器了,但是缓存的内容却在其他服务器上,此时缓存层再次被穿透去底层存储层读取数据,并将读取的内容重新缓存到该宕机服务器上供后续访问使用;对于保存有相同key的另一台服务器上的相同key不会被自动删除但也不会再次使用,直到垃圾回收时清除。

  4. memcached分布式集群上如果不同服务器存在相同的key,那么删除该key时,只会删除根据分布函数得到的服务器上的key,对于其他服务器上相同的key则不会被删除,直到垃圾回收。造成的风险是如果能访问的这台服务器又宕机了,而此时有相同key的服务器上key还未清除而且恰巧访问这台,就有可能造成脏读。

memcached分布式的缺点

  1.  memcached分布式不会存储副本,也就是说某一台服务器宕机,缓存在该台服务器上的内容就会丢失。

  2. memcached的key分布并不是完全离散的,导致的结果就是某些台服务器缓存的量大,某些台服务器缓存的量小;不过memcached的访问速度快,缓存量大也不会造成太大的延迟。

  3. 数据类型比较单一,不能存储复杂的对象。

memcached常用启动参数

  -p  指定memcached启动的端口,默认为11211

   -m  指定memcached使用的最大内存,默认为64M

   -t 指定memcached线程数,默认为4

   -l 绑定的IP地址,默认为所有都允许访问,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1则只允许本机访问

   -d start 启动memcached服务

     -d restart 重启memcached服务

   -c  最大同时连接数,默认为1024

memcached性能

  memcached的性能已经特别高,但是随着存储量和并发量的增大,性能会下降,但是使用集群,性能比使用单台时要高。详情请看:http://www.diggerplus.org/archives/190;

其他

  1. memcached的key最大存储250个英文字母

   2. memcached的key不能存在空格和控制字符

  3. memcached的默认过期时间为30天,如果设置超时时间长于30天,则30天起效,也就是说超时时间不会超过30天

  4. memcached单个key的值最大为1M,如果缓存的值大小大于1M,可以通过将值拆分为多个key进行保存

  

  

memcached 分布式的更多相关文章

  1. Memcached 分布式缓存实现原理

    摘要 在高并发环境下,大量的读.写请求涌向数据库,此时磁盘IO将成为瓶颈,从而导致过高的响应延迟,因此缓存应运而生.无论是单机缓存还是分布式缓存都有其适应场景和优缺点,当今存在的缓存产品也是数不胜数, ...

  2. memcached分布式实现原理

    摘要 在高并发环境下,大量的读.写请求涌向数据库,此时磁盘IO将成为瓶颈,从而导致过高的响应延迟,因此缓存应运而生.无论是单机缓存还是分布式缓存都有其适应场景和优缺点,当今存在的缓存产品也是数不胜数, ...

  3. memcached 分布式聚类算法

    memcached 分布式集群,该决定必须书面开发商自己.和redis 由分布式server决定.上 memcached 有两个选项用于分布式.第一个是:模运算 另一种是:一致性hash 分布式算法. ...

  4. memcached分布式缓存

    1.memcached分布式简介 memcached虽然称为“分布式”缓存服务器,但服务器端并没有“分布式”功能.Memcache集群主机不能够相互通信传输数据,它的“分布式”是基于客户端的程序逻辑算 ...

  5. Memcached分布式缓存初体验

    1 Memcached简介/下载/安装 Memcached是一个高性能的不是内存对象缓存系统,用于动态Web应用以减轻数据库负载.Memcached基于一个存储键/值对的HashMap.其客户端可以使 ...

  6. 缓存应用--Memcached分布式缓存简介

    一.   什么是Memcached Memcached 是一个高性能的分布式内存 对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象 来减少读取数据库的次数,从而提供动态. ...

  7. Discuz!NT中集成Memcached分布式缓存

    大约在两年前我写过一篇关于Discuz!NT缓存架构的文章,在那篇文章的结尾介绍了在IIS中如果开启多个应用程序池会造成多个缓存实例之间数据同步的问题.虽然给出了一个解决方案,但无形中却把压力转移到了 ...

  8. Memcached 分布式缓存系统部署与调试

    Memcache 分布式缓存系统部署与调试 工作机制:通过在内存中开辟一块区域来维持一个大的hash表来加快页面访问速度,和数据库是独立的;目前主要用来缓存数据库的数据;存放在内存的数据通过LRU算法 ...

  9. Memcached——分布式缓存

    下载文件:https://sourceforge.net/projects/memcacheddotnet/ 将Commons.dll,ICSharpCode.SharpZipLib.dll,log4 ...

随机推荐

  1. [Android]Android端ORM框架——RapidORM(v2.1)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/6020412.html [Android]Android端ORM ...

  2. OOP感悟

    行内讲的最多的就是出来一年内基本靠copy,一年后才基本懂得如何去写代码,而理解领悟oop,需要的时间却不定. 我工作中,我发现很多人拿着面向对相当的语言作者做着面向过程的事情,不需要知其所以然,只要 ...

  3. echarts图表第一个案例

    1.action中获取到数据 @Override public String execute() throws Exception { List<Student> find = echar ...

  4. 用直接路径(direct-path)insert提升性能的两种方法

    1.传统串行insert方式 常见的insert方式有两种: (1) insert into table_name values(....) (2) insert into target_table ...

  5. 快速入门系列--WCF--01基础概念

    转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...

  6. sql学习笔记--存储过程

    存储过程(stored procedure)有时也称sproc,它是真正的脚本,更准确地说,它是批处理(batch),但都不是很确切,它存储与数据库而不是单独的文件中. 存储过程中有输入参数,输出参数 ...

  7. Android Matrix

    转自 :http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html#code Matrix的数学原理 平移变换 旋转变换 缩放变换 错切 ...

  8. [问题2014A05] 解答

    [问题2014A05]  解答 (1) 将矩阵 \(A\) 分解为两个矩阵的乘积: \[A=\begin{bmatrix} 1 & 1 & \cdots & 1 & 1 ...

  9. Fibonacci Again

    Problem Description There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) ...

  10. PHP 数组和字符串互相转换实现方法

    $array=explode(separator,$string); $string=implode(glue,$array);