memcached

memcached

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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的server
client通信并不使用复杂的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://javaforall.net/116981.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TLSF内存分配器记录[通俗易懂]

    TLSF内存分配器记录[通俗易懂]论文:《TLSF:aNewDynamicMemoryAllocatorforReal-TimeSystems》这也是Unity底层使用的内存分配器。我直接从论文中间部分开始看。firstlevel存的是每个内存分配大小,从2的四次方到2的31次方。而对应每个大小,又指向一个二级列表,里面被分成4级,每一级的范围认为是同一类。1表示空闲,所以只有2的六次方和2的15次方块是空闲的。再看它指向的二级列表。只有2的六次方+16到2的6次方+32的这个.

    2022年6月26日
    46
  • SilverLight网站收藏

    SilverLight网站收藏tp://msdn2.microsoft.com/en-us/asp.net/bb187452.aspxSilverlight1.0Beta下载http://msdn2.microsoft.com/en-us/asp.net/bb419316.aspxSilverlight1.1Alpha下载http://msdn2.microsoft.com/en-us/asp.net/bb4

    2022年10月19日
    4
  • 车载逆变器设计[通俗易懂]

    车载逆变器设计[通俗易懂]逆变器,别称为变流器、反流器,是一种可将直流电转换为交流电的器件,由逆变桥、逻辑控制、滤波电路三大部分组成,主要包括输入接口、电压启动回路、MOS开关管、PWM控制器、直流变换回路、反馈回路、LC振荡及输出回路、负载等部分,可分为半桥逆变器、全桥逆变器等。目前已广泛适用于空调、家庭影院、电脑、电视、抽油烟机、风扇、照明、录像机等设备中  逆变变压器原理  它的工作原理流

    2022年6月8日
    37
  • 0x00和’0′[通俗易懂]

    0x00和’0′[通俗易懂]往往小问题才会折腾很久。msmset((void*)virt,0x00,PAGE_SIZE)和msmset((void*)virt,‘0’,PAGE_SIZE)区别就在于0x00只是为了强调就是数字0,就是为了ASCII码转换的数字0!不是字符‘0’!如果手误将数字0写作字符‘0’,那就达不到用‘\0’清空字符串的目的了。所以最近在内核中分配页的时候总是判断最后一级页表项出错,原来是在allo

    2025年7月5日
    2
  • phpstorm3.3激活码(最新序列号破解)

    phpstorm3.3激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    150
  • JavaScript定时器与清除定时器

    JavaScript定时器与清除定时器定时器 清除定时器

    2025年7月20日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号