没有合适的资源?快使用搜索试试~ 我知道了~
memcached完全剖析
3星 · 超过75%的资源 需积分: 10 35 下载量 74 浏览量
2008-12-15
13:44:22
上传
评论
收藏 388KB PDF 举报
温馨提示
试读
30页
发表日:2008/7/2 memcached是什么? memcached的特征 协议简单 基于libevent的事件处理 内置内存存储方式 memcached不互相通信的分布式 安装memcached memcached的安装 memcached的启动 用客户端连接 使用Cache::Memcached 使用Cache::Memcached连接memcached 保存数据 获取数据 删除数据 增一和减一操作 ... ...
资源推荐
资源详情
资源评论
版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接
http://tech.idv2.com/2008/07/10/memcached-001/以及本声明。
翻译一篇技术评论社的文章,是讲memcached的连载。fcicq同学说这个东西很有
用,希望大家喜欢。
memcached完全剖析 1- memcached的基础
发表日:2008/7/2
作者:长野雅广(Masahiro Nagano)
原文链接:http://gihyo.jp/dev/feature/01/memcached/0001
我是mixi株式会社开发部系统运营组的长野。 日常负责程序的运营。从今天开
始,将分几次针对最近在Web应用的可扩展性领域 的热门话题memcached,与我
公司开发部研究开发组的前坂一起, 说明其内部结构和使用。
memcached是什么?
memcached的特征
o 协议简单
o 基于libevent的事件处理
o 内置内存存储方式
o memcached不互相通信的分布式
安装memcached
o memcached的安装
o memcached的启动
用客户端连接
使用Cache::Memcached
o 使用Cache::Memcached连接memcached
o 保存数据
o 获取数据
o 删除数据
o 增一和减一操作
总结
memcached是什么?
memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric
为首开发的一款软件。现在已成为 mixi、 hatena、 Facebook、 Vox、LiveJournal
等众多服务中 提高Web应用扩展性的重要因素。
许多 Web 应用都将数据保存到 RDBMS 中,应用服务器从中读取数据并在浏览器中
显示。 但随着数据量的增大、访问的集中,就会出现 RDBMS 的负担加重、数据
库响应恶化、 网站显示延迟等重大影响。
这时就该 memcached 大显身手了。memcached 是高性能的分布式内存缓存服务器。
一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动
态 Web 应用的速度、 提高可扩展性。
图 1 一般情况下 memcached 的用途
memcached的特征
memcached 作为高速运行的分布式缓存服务器,具有以下的特点。
协议简单
基于 libevent 的事件处理
内置内存存储方式
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/protoco
l.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 不会互相通信以共享信息。那么,怎样进行分布式呢? 这完全取
决于客户端的实现。本连载也将介绍 memcached 的分布式。
图 2 memcached 的分布式
接下来简单介绍一下 memcached 的使用方法。
安装memcached
memcached 的安装比较简单,这里稍加说明。
memcached 支持许多平台。
Linux
FreeBSD
Solaris (memcached 1.2.5 以上版本)
Mac OS X
另外也能安装在 Windows 上。这里使用 Fedora Core 8 进行说明。
memcached 的安装
运行 memcached 需要本文开头介绍的 libevent 库。Fedora 8 中有现成的 rpm 包,
通过 yum 命令安装即可。
$ sudo yum install libevent libevent-devel
memcached 的源代码可以从 memcached 网站上下载。本文执笔时的最新版本为
1.2.5。 Fedora 8 虽然也包含了 memcached 的 rpm,但版本比较老。因为源代码
安装并不困难, 这里就不使用 rpm 了。
下载memcached:http://www.danga.com/memcached/download.bml
memcached 安装与一般应用程序相同,configure、make、make install 就行了。
$ wget http://www.danga.com/memcached/dist/memcached-1.2.5.tar.gz
$ tar zxf memcached-1.2.5.tar.gz
$ cd memcached-1.2.5
$ ./configure
$ make
$ sudo make install
默认情况下 memcached 安装到/usr/local/bin 下。
memcached 的启动
从终端输入以下命令,启动 memcached。
$ /usr/local/bin/memcached -p 11211 -m 64m -vv
slab class 1: chunk size 88 perslab 11915
slab class 2: chunk size 112 perslab 9362
slab class 3: chunk size 144 perslab 7281
中间省略
slab class 38: chunk size 391224 perslab 2
slab class 39: chunk size 489032 perslab 2
<23 server listening
<24 send buffer was 110592, now 268435456
<24 server listening (udp)
<24 server listening (udp)
<24 server listening (udp)
<24 server listening (udp)
这里显示了调试信息。这样就在前台启动了 memcached,监听 TCP 端口 11211 最
大内存使用量为 64M。调试信息的内容大部分是关于存储的信息, 下次连载时
具体说明。
作为 daemon 后台启动时,只需
$ /usr/local/bin/memcached -p 11211 -m 64m -d
剩余29页未读,继续阅读
资源评论
- killeraction2012-08-18不错的资源,学习了。~
bingobird
- 粉丝: 4
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 金工实习实验报告.zip
- 基于Qt5+OpenCV3+C++实现的PCB缺陷检测系统+源码+文档(毕业设计&课程设计&项目开发)
- 毕业设计-Python实现基于BERT模型的中文文本情感分类项目源码+操作过程.zip
- Python实现基于BERT模型的中文文本情感分类项目源码+操作过程(毕业设计).zip
- Python基于PyQt5和SMTP协议实现邮件发送程序案例源码.7z
- 设置并固定SAS输出的RTF字体为宋体+新罗马
- 使用SAS为SAS输出的RTF文件增加水印
- Suno AI说明与版权解析.txt
- 277140009762891兔的电视1.1_1.0.2.apk
- labview入门与实例开发
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功