• memcached


    Memcached 是一个高性能的分布式内存对象缓存系统,对于动态Web适用于缓解数据库负载。它通过在内存中缓存数据和对象来降低读取数据库的次数,从而提高动态、数据库驱动站点的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,可是client能够用不论什么语言来编写,并通过memcached协议与守护进程通信。

    简单介绍

    memcached是一套分布式的快取系统,当初是Danga Interactive为了LiveJournal所发展的,但被很多软件(如MediaWiki)所使用。这是一套开放源码软件,以BSD license授权协议公布。
    memcached缺乏认证以及安全管制。这代表应该将memcachedserver放置在防火墙后。
    memcached的API使用32位元的循环冗余校验(CRC-32)计算键值后,将资料分散在不同的机器上。当表格满了以后,接下来新增的资料会以LRU机制替换掉。因为memcached通常仅仅是当作快取系统使用,所以使用memcached的应用程式在写回较慢的系统时(像是后端的数据库)须要额外的程式码更新memcached内的资料
    memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。很多Web应用都将数据保存到RDBMS中。应用server从中读取数据并在浏览器中显示。

    但随着数据量的增大、訪问的集中,就会出现RDBMS的负担加重、数据库响应恶化、站点显示延迟等重大影响。

    这时就该memcached大显身手了。

    memcached是高性能的分布式内存缓存server。一般的使用目的是,通过缓存数据库查询结果,降低数据库訪问次数。以提高动态Web应用的速度、提高可扩展性。

    Memcached 的守护进程(daemon )是用C写的,可是client能够用不论什么语言来编写,并通过memcached协议与守护进程通信。可是它并不提供冗余(比如,复制其hashmap条目)。当某个serverS停止执行或崩溃了。全部存放在S上的键/值对都将丢失。
    Memcached由Danga Interactive开发,其最新版本号公布于2010年,作者为Anatoly Vorobey和Brad Fitzpatrick。用于提升LiveJournal . com訪问速度的。LJ每秒动态页面訪问量几千次。用户700万。Memcached将数据库负载大幅度减少,更好的分配资源,更高速訪问。

    特征

    memcached作为快速执行的分布式缓存server。具有下面的特点。
    · 协议简单
    · 基于libevent的事件处理
    · 内置内存存储方式
    · memcached不互相通信的分布式

    协议

    memcached的serverclient通信并不使用复杂的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 (数据)

    事件处理

    libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对server的连接数添加,也能发挥O(1)的性能。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。关于事件处理这里就不再具体介绍,能够參考Dan Kegel的The C10K Problem。

    存储方式

    为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。因为数据仅存在于内存中。因此重新启动memcached、重新启动操作系统会导致所有数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自己主动删除不使用的缓存。memcached本身是为缓存而设计的server,因此并没有过多考虑数据的永久性问题。

    通信分布式

    memcached虽然是“分布式”缓存server。但server端并没有分布式功能。各个memcached不会互相通信以共享信息。

    那么,如何进行分布式呢?这全然取决于client实现。本文还将介绍memcached分散式。

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    写代码如坐禅:你是哪一类程序员
    关于鸿蒙的商业讨论
    为什么你总是“把天聊死”?
    生活不易,唯有努力
    如何用一句话激怒一名程序员?
    华为正式开源方舟编译器,开源了,它真的开源了!
    为什么HTTPS比HTTP更安全?
    《管理者必读12篇》购买方法
    程序员都在用的电脑小技巧,看一遍就学会,每天早下班一小时
    一位程序员的一天工作清单:5:30下班,5:30起床
  • 原文地址:https://www.cnblogs.com/yxwkf/p/4822840.html
Copyright © 2020-2023  润新知