肉渣教程

Memcached 特点

上一节 下一节

Memcached的特点

作为一种高性能的分布式缓存,Memcached具有如下特点:

  • 协议简单
  • 基于libevent的事件处理
  • 基于内存的存储方式
  • 基于算法的分布式

协议简单

Memcached缓存服务器进程和客户端进程之间的通信,非常简单,使用的是基于文本行的协议。如下所示,通过telnet也能在memcached缓存中保存数据、获取数据:

$ telnet 10.11.8.76 12007
Trying 10.11.8.76...
Connected to 10.11.8.76
Escape character is '^]'.
set key1 0 0 3       (保存命令) 
value1               (输入数据) 
STORED               (输出结果) 
get key1             (取得命令) 
VALUE key1 0 3       (输出数据) 
value1               (输出数据)

基于libevent的事件处理

Libevent是一个用C语言写的异步事件通知库,不仅性能非常高,而且十分轻量级。它提供了一组简单的API,而且跨平台;因此,很多软件都把libevent当作底层的网络库来用,而Memcached正是其中一员,基于libevent来实现分布式缓存。(说的有点抽象,如果想有一个比较具象的感觉,那就打一个不是太严谨的比喻,有点类似JavaScript的根据事件来异步调用函数。)

基于内存的存储方式

Memcached是完全基于内存来构建缓存的,因此,所有存储在Memcached缓存中的数据,实质上都是在内存中的。因此只要重启Memcached、重启系统就都会丢失所有之前的数据。这就是所谓的“Memcached不存在数据持久化”,Memcached只是缓存,它也只适合作为缓存。

当数据量达到预设的最大使用内存量时,Memcached就会基于默认的LRU(Least Recently Used)删除策略来自动删除最近最少使用的缓存数据。

基于算法的分布式

Memcached虽然号称“分布式”,但是不同的Memcached进程之间是不进行互相通信的;而Memcached则是基于客户端的算法而实现分布式的。少未必是坏事,某些角度上少即是多,Memcached的“分布式”简而不陋;后续章节会进一步介绍Memcached的分布式。


Memcached 特点

上一节 下一节