Memcached学习笔记 — 第一部分:Memcached基础

 

     本文是基于网上资料和自己的理解整理的学习笔记,中间涉及的网络资料,我在文档后的参考统一列举。如果我的某些理解有误,望谅解,并希望得到你的回复。

 

什么是 memcached

在许多高并发的应用中,把业务数据保持久化 ( 保存到数据库,磁盘文件或其它 ) 后,应用从持久化设备中读取数据并在浏览器中显示,随用户量,数据量增大,访问的集中,会出现持久化设备负担过重(典型的就是数据库),影响应用响应速度,应用延迟严重等重大问题。典型的应用就是 WEB 应用中的高并发网站。

这时候应用就需要一种缓存机制来提高并发读取速度的性能 , memcached 能在大中型系统中提供优秀的缓存服务。 memcached 是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态 Web 应用的速度、提高可扩展性。

memcached 是以 LiveJournal 旗下 Danga Interactive 公司的 Brad Fitzpatric 为首开发的一款软件。现在已成为 mixihatenaFacebookVoxLiveJournal 等众多服务中提高 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 是个程序库,它将 LinuxepollBSD 类操作系统的 kqueue 等事件处理功能 封装成统一的接口。即使对服务器的连接数增加,也能发挥 O(1) 的性能。 memcached 使用这个 libevent 库,因此能在 LinuxBSDSolaris 等操作系统上发挥其高性能。 关于事件处理这里就不再详细介绍,可以参考 Dan KegelThe 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 的分布式。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值