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


相关推荐

  • GBDT算法原理以及实例理解[通俗易懂]

    GBDT算法原理以及实例理解[通俗易懂]【尊重原创,转载请注明出处】http://blog.csdn.net/zpalyq110/article/details/79527653  GBDT的全称是GradientBoostingDecisionTree,梯度下降树,在传统机器学习算法中,GBDT算的上TOP3的算法。想要理解GBDT的真正意义,那就必须理解GBDT中的GradientBoosting和Decision…

    2022年10月12日
    3
  • 渗透测试之信息收集 搭建漏洞环境(渗透测试信息收集的方法)

    目录信息收集域名信息的收集公司敏感信息网上搜集网站指纹识别整站分析服务器类型(Linux/Windows)网站容器(Apache/Nginx/Tomcat/IIS)脚本类型(php/jsp/asp/aspx)数据库类型(Mysql/Oracle/Accees/Mqlserver)主机扫描(Nessus)端口扫描(nmap)网站敏感目录和文件旁站和…

    2022年4月15日
    37
  • shell数组与awk数组

    shell数组与awk数组1.whilereadlinedo hosts[i++]=$linedone</etc/hosts#遍历foriin${!hosts[@]}do echo”hosts数组的索引:$i,索引对应的值:${hosts[$i]}”done1.数组值的自增[root@manager/tmp/sh/2020-12-09_题]#declare-Aip#声明一个数组ip[root@manager/tmp/sh/2020-12-09_题]#echo

    2022年7月19日
    17
  • spring boot 实现全局404页面「建议收藏」

    spring boot 实现全局404页面「建议收藏」springBoot2.0版本以下importorg.springframework.boot.autoconfigure.web.ErrorController;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;…

    2022年7月27日
    19
  • 一步一步来:MQTT服务器搭建、MQTT客户端使用

    一步一步来:MQTT服务器搭建、MQTT客户端使用物联网应用如火如荼,本文就物联网应用中最受青睐的协议MQTT相关测试工具的使用进行简单说明。希望此文能给需要用到的朋友一些微薄的帮助……一、MQTT服务器(emqx)搭建1.下载服务器MQTTBroker从https://www.emqx.io/cn/mqtt/public-mqtt5-broker下载MQTTBroker。这里我使用的windows系统,下载对应版本工具:emqx-windows-v4.1-rc.2.zip下载好后,解压目…

    2022年6月5日
    44
  • jQuery.extend 函数详解

    jQuery.extend 函数详解

    2021年8月27日
    42

发表回复

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

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