设为首页 收藏本站
查看: 953|回复: 0

[经验分享] Memcached 学习

[复制链接]

尚未签到

发表于 2015-9-2 07:07:44 | 显示全部楼层 |阅读模式
  http://baike.baidu.com/view/794242.htm
http://www.oschina.net/p/memcached
  Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。
它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。
Memcached基于一个存储键/值对的hashmap。
其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
  memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。
  memcached作为高速运行的分布式缓存服务器,具有以下的特点。
  · 协议简单
  · 基于libevent的事件处理
  · 内置内存存储方式
  · memcached不互相通信的分布式
协议简单:
使用简单的基于文本行的协议。
因此,通过telnet也能在memcached上保存数据、取得数据。
基于libevent的事处理
libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。
即使对服务器的连接数增加,也能发挥O(1)的性能。
memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。
内置内存存储方式
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。
由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。
另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。
memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
另外,由于memcached通常只是当作快取系统使用,所以使用memcached的应用程式在写回较慢的系统时(像是后端的数据库)需要额外的程式码更新memcached内的资料。
  不互相通信的分布式
memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。
各个memcached不会互相通信以共享信息。
分布式完全取决于客户端的实现
  用客户端连接
许多语言都实现了连接memcached的客户端,其中以Perl、PHP为主。
仅仅memcached网站上列出的语言就有
  · Perl
  · PHP
  · Python
  · Ruby
  · C#
  · C/C++
  · Lua
  等等。
(似乎没有java)
  
  由于memcached通常只是当作快取系统使用,所以使用memcached的应用程式在写回较慢的系统时(像是后端的数据库)需要额外的程式码更新memcached内的资料。
  memcached具有多种语言的客户端开发包,包括:Perl/PHP/JAVA/C/Python/Ruby/C#/MySQL/
  
  
http://blog.developers.api.sina.com.cn/?p=124
  如果只是本地级缓存,使用memcached是非常不划算的。
此时,建议使用APC、共享内存等方式。
  在大型系统中,访问同样的数据是很频繁的,memcached可以大大降低数据库压力,使系统执行效率提升。
另外,memcached也经常作为服务器之间数据共享的存储媒介,
例如在SSO系统中保存系统单点登陆状态的数据就可以保存在memcached中,被多个应用共享。
  很多人的错误理解,memcached的性能非常好,好到了内存和硬盘的对比程度,
其实memcached使用内存并不会得到成百上千的读写速度提高,它的实际瓶颈在于网络连接
它和使用磁盘的数据库系统相比,好处在于它本身非常“轻”,因为没有过多的开销和直接的读写方式,
它可以轻松应付非常大的数据交换量,所以经常会出现两条千兆网络带宽都满负荷了
  其他:
APR环境介绍
  APR的全称:Apache Portable Runtime。它是Apache软件基金会创建并维持的一套跨平台的C语言库。它从Apache httpd1.x中抽取出来并独立于httpd之外,Apache httpd2.x就是建立在APR上。APR提供了很多方便的API接口可供使用,包括如内存池、字符串操作、网络、数组、hash表等实用的功能。开发Apache2 Module要接触很多APR函数,当然APR可以独立安装独立使用,可以用来写自己的应用程序,不一定是Apache httpd的相关开发。
  Alternative PHP Cache(APC)是 PHP 的一个免费公开的优化代码缓存。
它用来提供免费,公开并且强健的架构来缓存和优化 PHP 的中间代码。
  
问:
memcached与hibernate的关系。
答:
memcached可以作为hibernate的二级缓存。
因为memcached的缓存是分布式的,可以让不同主机上的多个用户同时访问,因此解决了共享内存只能单机应用的局限。
另:hibernate的缓存机制是其成为主流持久层技术的主要原因。
http://www.cnblogs.com/azai/archive/2010/07/11/1775076.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-108469-1-1.html 上篇帖子: 必须转载 下篇帖子: Linux下安装Memcached图解教程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表