本文是基于网上资料和自己的理解整理的学习笔记,中间涉及的网络资料,我在文档后的参考统一列举。如果我的某些理解有误,望谅解,并希望得到你的回复。
什么是
memcached
在许多高并发的应用中,把业务数据保持久化
(
保存到数据库,磁盘文件或其它
)
后,应用从持久化设备中读取数据并在浏览器中显示,随用户量,数据量增大,访问的集中,会出现持久化设备负担过重(典型的就是数据库),影响应用响应速度,应用延迟严重等重大问题。典型的应用就是
WEB
应用中的高并发网站。
这时候应用就需要一种缓存机制来提高并发读取速度的性能
,
memcached
能在大中型系统中提供优秀的缓存服务。
memcached
是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态
Web
应用的速度、提高可扩展性。
memcached
是以
LiveJournal
旗下
Danga Interactive
公司的
Brad Fitzpatric
为首开发的一款软件。现在已成为
mixi
、
hatena
、
Facebook
、
Vox
、
LiveJournal
等众多服务中提高
Web
应用扩展性的重要因素。
官方网站:
http://memcached.com
Memcached
的原理和功能如下图:
这图片是网上找的,后面有引用地址,画的很贴切,本想自己画个,但是想了下,自己画来也差不多,就懒了。。。
memcached
特点
协议简单
memcached
的服务器客户端通信并不使用复杂的
XML
等格式,
而使用简单的基于文本行的协议。因此,通过
telnet
也能在
memcached
上保存数据、取得数据。下面是官方的例子:
$ telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set foo 0 0 3
(保存命令)
bar
(数据)
STORED
(结果)
get foo
(取得命令)
VALUE foo 0 3
(数据)
bar
(数据)
协议文档位于
memcached
的源代码内,也可以参考以下的
URL
。
http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt
命令介绍请参考后续介绍
基于
libevent
的事件处理
libevent
是个程序库,它将
Linux
的
epoll
、
BSD
类操作系统的
kqueue
等事件处理功能
封装成统一的接口。即使对服务器的连接数增加,也能发挥
O(1)
的性能。
memcached
使用这个
libevent
库,因此能在
Linux
、
BSD
、
Solaris
等操作系统上发挥其高性能。
关于事件处理这里就不再详细介绍,可以参考
Dan
Kegel
的
The C10K Problem
。
libevent: http://www.monkey.org/~provos/libevent/
The C10K Problem: http://www.kegel.com/c10k.html
内存缓存机制
为了提高性能,
memcached
中保存的数据都存储在
memcached
内置的内存存储空间中。
由于数据仅存在于内存中,因此重启
memcached
、重启操作系统会导致全部数据消失。
另外,内容容量达到指定值之后,就基于
LRU(Least
Recently Used)
算法自动删除不使用的缓存。
memcached
本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
关于内存缓存机制和模型请参考后续介绍。
客户端实现分布式
memcached
尽管是
“
分布式
”
缓存服务器,但服务器端并没有分布式功能。
各个
memcached
不会互相通信以共享信息。那么,怎样进行分布式呢?
这完全取决于客户端的实现。本连载也将介绍
memcached
的分布式。
- 大小: 138.3 KB
分享到:
相关推荐
NULL 博文链接:https://acooly.iteye.com/blog/1120347
Memcached学习笔记2.docMemcached学习笔记2.doc
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的...
memcached-笔记资料
距离写这篇学习笔记已经差不多大半年时间了,当时在EMERSON做嵌入式开发,想转型找个大数据/服务器相关的工作,为了给自己找工作增加点资本就话了点时间看了下memcached的代码,同时写了一个memcached的持久化存储...
Memcached源码剖析笔记:从源码级别剖析memcached的实现原理,讲的比较细。
Memcached原理和使用详解.pdf memcached完全剖析–1._memcached的基础.pdf memcached全面剖析.pdf Memcached内存分析、调优、集群.pptx
在 1.4.5 版本以前 memcached 可以作为一个服务安装,而在 1.4.5 及之后的版本删除了该功能。因此我们以下介绍两个不同版本 1.4.4 及 1.4.5的不同安装方法: memcached 版本安装 1、解压下载的安装包到指定目录。 ...
memcached-笔记资料.rar
memcachedclient-2.0.1.jar 之前在网上搜了很久没搜到,所以找到了跟大家分享
memcached 源码剖析笔记和源码。 Memcached 是一个自由、源码开放、高性能、分布式内存对象缓存系统,目的在于过减轻数据库负载来使动态 Web 应用程序提速。
1、安装:memcached.exe –d install 2、启动:memcached.exe -d start 此时memcached已经注册为开机启动服务完成安装。 使用参数: -p 监听的端口 -l 连接的IP地址, 默认是本机 -d start 启动memcached服务 -d ...
Chapter 1: LAMMP, Now with an Extra M Chapter 2: MySQL Chapter 3: Advanced MySQL Chapter 4: Perl Primer Chapter 5: Object-Oriented Perl Chapter 6: MySQL and Perl Chapter 7: Simple Database ...
memcached 安装文件,libevent库, C/C++ memcached 客户端库:libmemcached 全套工具:libevent-1.3.tar.gz,memcached-1.2.2.tar.gz,libmemcached-0.42.tar.gz 测试通过的
Memcached 学习Memcached 运行Memcached命令的运行:/usr/local/memcached/bin/memcached -d -m 64M -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid注意:如果使用自动安装 memcached 命令位于 /usr/...
系统的讲解了memcached、安装、应用以及java调用
memcached安装错误解决文件
1. 下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached 2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装 3. 再输入: ‘c:\memcached\memcached.exe -d ...
memcached入门到理解 博文链接:https://johnnyhg.iteye.com/blog/237733
用于hibernate集成memcached作为二级缓存所需要的包,1.2.2版本