🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 4.2 memcached的特征 memcached作为高速运行的分布式缓存服务器,具有以下的特点。 ### 协议简单 memcached的服务器客户端通信并不使用复杂的XML等格式, 而使用简单的基于文本行的协议。因此,通过telnet 也能在memcached上保存数据、取得数据。下面是例子。 ```bash $ 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的源代码内。 ### 基于libevent的事件处理 libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能 封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。 memcached使用这个 libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。 关于事件处理这 里就不再详细介绍,可以参考Dan Kegel的The C10K Problem。 ### 内置内存存储方式 为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。 由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。 另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。 memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。 关于内存存储的详细信息,本连载的第二讲以后前坂会进行介绍,请届时参考。 ### memcached不互相通信的分布式 memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。 各个mem- cached不会互相通信以共享信息。那么,怎样进行分布式呢? 这完全取决于客户端的实现。 ![](https://img.kancloud.cn/69/00/6900ca4aaf7c2420e46f141746862395_718x618.png)