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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CDN之GSLB详解

    CDN之GSLB详解CDN的关键技术主要有内容路由技术、内容分发技术、内容存储技术、内容管理技术等,而本文介绍的GSLB是属于CDN中的内容路由技术的关键技术。一、内容路由技术简介:CDN负载均衡系统实现C…

    2022年6月10日
    54
  • C语言中位运算异或“∧”的作用「建议收藏」

    C语言中位运算异或“∧”的作用「建议收藏」1.概念异或运算符”∧”也称XOR运算符。它的规则是若参加运算的两个二进位同号,则结果为0(假);异号则为1(真)。即0∧0=0,0∧1=1,1^0=1,1∧1=0。运算说明0^0=0,0^1=10异或任何数,其结果=任何数1^0=1,1^1=01异或任何数,其结果=任何数取反x^x=0任何数异或自己,等于把自己置02.应用(1)使特定位翻转 比如

    2022年5月27日
    42
  • latex 公式大括号_LaTeX数学符号

    latex 公式大括号_LaTeX数学符号\begin{equation}a(t)=\begin{cases}x=Q(x)=q_{1}&\text{$x\in[minimum,C]$}\\x=Q(x)=q_{2}&\text{$x\in[C,maximum]$}\end{cases}\end{equation}实践证明,latex写大括号公式的时,&符号前面不能有空格!结果如下图:错误方式一:(多了四个$)\begin{equation}a(t)=\begin{cas

    2022年9月25日
    1
  • SQL数据库之索引优缺点

    SQL数据库之索引优缺点 SQL数据库之索引使用原则及利弊 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。 优点通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。  可以大大加快数据的检索速度,这也是创建索引的最主要的原因。  可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。  在使用分组和排序子句进行数据检索时,…

    2022年5月25日
    39
  • 拓扑排序~C语言完整代码

    拓扑排序~C语言完整代码对一个有向无环图 DirectedAcyc 简称 DAG G 进行拓扑排序 是将 G 中所有顶点排成一个线性序列 使得图中任意一对顶点 u 和 v 若边 u v E G 则 u 在线性序列中出现在 v 之前 通常 这样的线性序列称为满足拓扑次序 TopologicalO 的序列 简称拓扑序列 简单的说 由某个集合上的一个偏序得到该集合上的一个全序 这个操作称之为拓扑排序 拿个例子来说

    2025年7月16日
    0
  • Android面试题(四大组件篇)[通俗易懂]

    Android面试题(四大组件篇)[通俗易懂]Android面试题(四大组件篇)window、进程、线程篇Android面试题(数据存储、view篇)ActivityQ:说下Activity的生命周期?Q:onStart()和onResume()/onPause()和onStop()的区别?是否位于前台,对用户是否可见的区别Q:ActivityA启动另一个ActivityB会回调哪些方法?如果A…

    2022年5月21日
    38

发表回复

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

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