memcached 分布式

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分布式的优点有哪些呢: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进行保存

相关文章
相关标签/搜索