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


相关推荐

  • 汉罗塔c++递归_栈与递归的区别

    汉罗塔c++递归_栈与递归的区别汉罗塔问题是一个非常经典的算法,我们首先来研究一下修改的汉罗塔(简化步骤),在后面我们将来讲述经典的汉罗塔问题。题目:修改后的汉罗塔的规则:现在限制不能从最左侧的塔直接移动到最右侧,必需要经过中间;同时从最右侧移动到最左测试,同样必需经过中间;要求移动N层塔时,打印最优移动1、用递归函数实现(从最左移动到最右)分析:-当只有一层塔时,我们先需要将其从左移到中间,再从中间移动到右边,共分为

    2022年10月11日
    0
  • system在c语言中_c语言system返回值

    system在c语言中_c语言system返回值需包含头文件:C标准库-<stdlib.h>文章目录描述声明参数返回值实例1实例2:列出windows机上当前目录下所有的文件和目录描述C库函数intsystem(constchar*command)把command指定的命令名称或程序名称传给要被命令处理器执行的主机环境,并在命令完成后返回。声明下面是system()函数的声明。intsystem(constchar*command)参数command–包含被请求变量名称的C字符串。

    2022年9月15日
    0
  • generic host process已停止工作_host error怎么修复

    generic host process已停止工作_host error怎么修复GenericHostProcessforWin32开机后总是提示出现错误需要关闭GenericHostProcessforWin32Services错误解决办法出现上面这个错误一般有三种情况。1.就是病毒。开机后会提示GenericHostProcessforWin32Services遇到问题需要关闭”“RemoteRro…

    2022年10月10日
    0
  • 将Matplotlib绘制的图显示到Tkinter中(详细教程)

    将Matplotlib绘制的图显示到Tkinter中(详细教程)

    2020年11月8日
    295
  • Java–Java版本和JDK版本「建议收藏」

    Java–Java版本和JDK版本「建议收藏」对于Java初学者,经常会听到同事,或看到网上Java版本和JDK版本不一的叫法,不明白这两者到底什么关系?其实博主当年初学Java时也有这样的困惑,今天我们就来好好探讨一下,如有不对之处,请加以指正,不喜勿喷,谢谢!Java版本叫法:Java6、Java8、Java11、Java13(当前最新版本Java17)等这一类“JavaX”的Java版本名称同时又会听到,看到JDK版本叫法:JDK1.6、JDK1.8等这种“J…

    2022年9月15日
    0
  • linux宝塔卸载,宝塔面板卸载与安装[通俗易懂]

    linux宝塔卸载,宝塔面板卸载与安装[通俗易懂]一键卸载宝塔Linux面板及运行环境命令1-使用xshell链接服务进入服务器命令:wgethttp://download.bt.cn/install/bt-uninstall.sh2-执行脚本命令:shbt-uninstall.sh3-根据提示4-完成更多功能及文档2,安装宝塔面板执行以下代码进行安装宝塔6.9免费版。宝塔6.9版本已经很稳定了,推荐大家直接安装6.9版本(注意:…

    2022年9月6日
    3

发表回复

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

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