Memcache

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

成都创新互联公司服务项目包括水富网站建设、水富网站制作、水富网页制作以及水富网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,水富网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到水富省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后

特征

memcached作为高速运行的分布式缓存服务器,具有以下的特点。

· 协议简单

· 基于libevent的事件处理

· 内置内存存储方式

· memcached不互相通信的分布式

事件处理

libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。关于事件处理这里就不再详细介绍,可以参考Dan Kegel的The C10K Problem。

存储方式

为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。

通信分布式

memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现。本文也将介绍memcached的分布式。

主要功能:

服务器参数监控:STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新

服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控

支持数据遍历,方便对存储内容进行监视

支持条件查询,筛选出满足条件的KEY或VALUE

数组、JSON等序列化字符反序列显示

兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外)

支持服务器连接池,多服务器管理切换方便简洁

Memcached 是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作【客户端可以由各种语言编写】。客户端首先与 Memcached 服务建立连接,然后存取对象。保存在 Memcached 中的对象是放置在内存中的,而不是在硬盘上。

Memcached 进程运行之后,会预申请一块较大的内存空间,自己进行管理,用完之后再申请,不是每次需要的时候去向操作系统申请。Memcached将对象保存在一个巨大的Hash表中,它还使用NewHash算法来管理Hash表,从而获得进一步的性能提升。所以当分配给Memcached的内存足够大的时候,Memcached的时间消耗基本上只是网络Socket连接了

下面来说说Memcached的不足:

1、数据是保存在内存当中的,一旦服务进程重启,数据会全部丢失

对策:可以采取更改Memcached的源代码,增加定期写入硬盘的功能

2、Memcached以root权限运行,而且Memcached本身没有任何权限管理和认证功能,安 全性不足

对策:可以将Memcached服务绑定在内网IP上,通过防火墙进行防护

1)如果网站包含了访问量很大的动态网页,因而数据库的负载将会很高。由于大部分数据库请求都是读操作,那么memcached可以显著地减小数据库负载。
2)如果数据库服务器的负载比较低但CPU使用率很高,这时可以缓存计算好的结果( computed objects )和渲染后的网页模板(enderred templates)。
3)利用memcached可以缓存session数据、临时数据以减少对他们的数据库写操作。
4)缓存一些很小但是被频繁访问的文件。
5)缓存Web \'services\'(非IBM宣扬的Web Services,译者注)或RSS feeds的结果.。
不适用memcached的业务场景:
1)缓存对象的大小大于1MB
Memcached本身就不是为了处理庞大的多媒体(large media)和巨大的二进制块(streaming huge blobs)而设计的。
2)key的长度大于250字符
3)虚拟主机不让运行memcached服务
如果应用本身托管在低端的虚拟私有服务器上,像vmware, xen这类虚拟化技术并不适合运行memcached。Memcached需要接管和控制大块的内存,如果memcached管理的内存
被OS或 hypervisor交换出去,memcached的性能将大打折扣。
4)应用运行在不安全的环境中
Memcached为提供任何安全策略,仅仅通过telnet就可以访问到memcached。如果应用运行在共享的系统上,需要着重考虑安全问题。
5)业务本身需要的是持久化数据或者说需要的应该是database

文章题目:Memcache
链接地址:https://www.cdcxhl.com/article0/cjcdio.html

成都网站建设公司_创新互联,为您提供营销型网站建设服务器托管品牌网站设计网站设计公司虚拟主机定制网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

小程序开发