什么是memcached

来源:互联网 发布:网络哔哔是什么意思 编辑:程序博客网 时间:2024/06/16 12:21

参考http://kb.cnblogs.com/page/42731/

1、memcached 出现的背景和意义

许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。

这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。

2、memcached 工作层图



3、memcached的特征

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

  • 协议简单
  • 基于libevent的事件处理
  • 内置内存存储方式
  • memcached不互相通信的分布式
    3.1、协议简单
    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 (数据)
    3.2、基于libevent的事务处理
    libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能 封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。 memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。 
    libevent简介见http://www.monkey.org/~provos/libevent/
    3.3、内置内存存储方式
    为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。 由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。 另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。 memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。
    3.4、memcached不互相通信的分布式
    memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。 各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢? 这完全取决于客户端的实现。








0 0
原创粉丝点击