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分布式

    memcached是应用最广的开源cache产品,它本身不提供分布式的解决方案,我猜想一方面它想尽量保持产品简单高效,另一方面cache的key-value的特性使得让memcached分布式起来比较 ...

  6. 09 Memcached 分布式之取模算法的缺陷

    一: Memcached 分布式之取模算法的缺陷(1)假设你有8台服务器,运行中突然down一台,则求余数的底数就7. 后果: key_0%8==0 ,key_0%7==0 =>hist(命中) ...

  7. Memcached 分布式缓存实现原理简介

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

  8. Memcached分布式缓存初体验

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

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

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

随机推荐

  1. 关于Hibernate XXX is not mapped 错误

    我的实体类是这么配置的 @Entity(name="EntityName")  //必须,name为可选,对应数据库中一的个表 就会出现 XXX is not mapped.   ...

  2. JVM 垃圾回收器工作原理及使用实例介绍(转载自IBM),直接复制粘贴,需要原文戳链接

    原文 https://www.ibm.com/developerworks/cn/java/j-lo-JVMGarbageCollection/ 再插一个关于线程和进程上下文,待判断 http://b ...

  3. for 小曦

    安装GO 当前版本1.6.2 http://blog.163.com/hehaifeng1984@126/blog/static/690011362013101044011568/ 教程 https: ...

  4. 自己用C语言写dsPIC / PIC24 serial bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). HyperBootlo ...

  5. 自己用C语言写单片机PIC16 serial bootloader

    了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). 为什么自己写bootl ...

  6. Spring boot开发过程遇到的一些小问题

    1.无法将yml文件自动注入到对应的类的实例中去: pom.xml文件里没有加如下依赖 <dependency> <groupId>org.springframework.bo ...

  7. 41个Web开发者JavaScript实用小技巧

    1. 将彻底屏蔽鼠标右键 oncontextmenu="window.event.returnValue=false" < table border oncontextmen ...

  8. Generate transparent shape on image

    Here is an example code to generate transparent shape on image. Need to pay attention can not use cv ...

  9. TJI读书笔记16-异常处理

    TJI读书笔记16-异常处理 概念 基本异常情形 异常的捕获 自定义异常 异常说明 捕获所有异常 栈轨迹 重新抛出异常 Java标准异常 使用finally 异常的限制 构造器 异常的匹配 其他乱七八 ...

  10. 【231】◀▶ 利用 IDL 读取 TIFF 数据

    参考:Create Latitude/Longitude Arrays for GeoTIFF Image 用到的函数为 READ_TIFF,通过此函数可以获取 TIFF 数据的数组信息,同时可以获取 ...