首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

缓存统观

2012-08-28 
缓存概览?一、缓存简介1.什么是缓存!--[endif]--!--[endif]--!--[endif]--二、ASP.NET缓存介绍主要的

缓存概览

?

一、缓存简介1.什么是缓存

<!--[endif]-->

<!--[endif]-->

<!--[endif]-->

二、ASP.NET缓存介绍

主要的特性有:

1. 快速.
2. 简单.
3. 多种缓存策略
4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题
5. 缓存数据会在虚拟机重启的过程中写入磁盘
6. 可以通过RMI、可插入API等方式进行分布式缓存
7. 具有缓存和缓存管理器的侦听接口
8. 支持多缓存管理器实例,以及一个实例的多个缓存区域
9. 提供Hibernate的缓存实现
10. 等等

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

?

?协议简单

?基于libevent的事件处理

?内置内存存储方式

?memcached不互相通信的分布式

?

<!--[if !supportLists]-->l??<!--[endif]-->协议简单

memcached的服务器客户端通信并不使用复杂的XML等格式,而使用简单的基于文本行的协议。因此,通过telnet 也能在memcached上保存数据、取得数据。下面是例子:

?

$ telnetlocalhost 11211

Trying127.0.0.1...

Connectedto localhost.localdomain (127.0.0.1).

Escapecharacter is '^]'.

set foo0 0 3???? (保存命令)

bar?????????????? (数据)

STORED??????????? (结果)

getfoo?????????? (取得命令)

VALUEfoo 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 C10KProblem: http://www.kegel.com/c10k.html

<!--[if !supportLists]-->l??<!--[endif]-->内置内存存储方式

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

?

<!--[if !supportLists]-->l??<!--[endif]-->memcached不互相通信的分布式

memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现。它在客户端连接中实现一个算法,将存储对象在各节点中做一个分配。从而实现了memcache的集群。

详细介绍可参考 memcached完全剖析系列教程

http://www.plhwin.com/memcached-tutorial-base-1/

?

热点排行