memcached完全剖析–1. memcached的基础
发表日:2008/7/2 原文链接:http://gihyo.jp/dev/feature/01/memcached/0001 这个系列文章的链接在这里:
我是mixi株式会社开发部系统运营组的长野。 日常负责程序的运营。从今天开始,将分几次针对最近在Web应用的可扩展性领域 的热门话题memcached,与我公司开发部研究开发组的前坂一起, 说明其内部结构和使用。
- memcached是什么?
- memcached的特征
- 协议简单
- 基于libevent的事件处理
- 内置内存存储方式
- memcached不互相通信的分布式
- 安装memcached
- memcached的安装
- memcached的启动
- 用客户端连接
- 使用Cache::Memcached
- 使用Cache::Memcached连接memcached
- 保存数据
- 获取数据
- 删除数据
- 增一和减一操作
- 总结
memcached是什么?
memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。现在已成为 mixi、 hatena、 Facebook、 Vox、LiveJournal等众多服务中 提高Web应用扩展性的重要因素。
许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。
这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。
图1 一般情况下memcached的用途
memcached的特征
memcached作为高速运行的分布式缓存服务器,具有以下的特点。
- 协议简单
- 基于libevent的事件处理
- 内置内存存储方式
- memcached不互相通信的分布式
协议简单
memcached的服务器客户端通信并不使用复杂的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 (数据)
协议文档位于memcached的源代码内,也可以参考以下的URL。
- http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt
基于libevent的事件处理
libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能 封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。 memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。 关于事件处理这里就不再详细介绍,可以参考Dan Kegel的The C10K Problem。
- libevent: http://www.monkey.org/~provos/libevent/
- The C10K Problem: http://www.kegel.com/c10k.html
内置内存存储方式
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。 由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。 另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。 memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。 关于内存存储的详细信息,本连载的第二讲以后前坂会进行介绍,请届时参考。
memcached不互相通信的分布式
memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。 各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢? 这完全取决于客户端的实现。本连载也将介绍memcached的分布式。
图2 memcached的分布式
接下来简单介绍一下memcached的使用方法。
安装memcached
memcached的安装比较简单,这里稍加说明。
memcached支持许多平台。
- Linux
- FreeBSD
- Solaris (memcached 1.2.5以上版本)
- Mac OS X
另外也能安装在Windows上。这里使用Fedora Core 8进行说明。
memcached的安装
运行memcached需要本文开头介绍的libevent库。Fedora 8中有现成的rpm包, 通过yum命令安装即可。
$ sudo yum install libevent libevent-devel
memcached的源代码可以从memcached网站上下载。本文执笔时的最新版本为1.2.5。 Fedora 8虽然也包含了memcached的rpm,但版本比较老。因为源代码安装并不困难, 这里就不使用rpm了。
- 下载memcached:http://www.danga.com/memcached/download.bml
memcached安装与一般应用程序相同,configure、make、make install就行了。
$ wget http://www.danga.com/memcached/dist/memcached-1.2.5.tar.gz $ tar zxf memcached-1.2.5.tar.gz $ cd memcached-1.2.5 $ ./configure $ make $ sudo make install
默认情况下memcached安装到/usr/local/bin下。
memcached的启动
从终端输入以下命令,启动memcached。
$ /usr/local/bin/memcached -p 11211 -m 64m -vv slab class 1: chunk size 88 perslab 11915 slab class 2: chunk size 112 perslab 9362 slab class 3: chunk size 144 perslab 7281 中间省略 slab class 38: chunk size 391224 perslab 2 slab class 39: chunk size 489032 perslab 2 <23 server listening <24 send buffer was 110592, now 268435456 <24 server listening (udp) <24 server listening (udp) <24 server listening (udp) <24 server listening (udp)
这里显示了调试信息。这样就在前台启动了memcached,监听TCP端口11211 最大内存使用量为64M。调试信息的内容大部分是关于存储的信息, 下次连载时具体说明。
作为daemon后台启动时,只需
$ /usr/local/bin/memcached -p 11211 -m 64m -d
这里使用的memcached启动选项的内容如下。
选项说明-p使用的TCP端口。默认为11211-m最大内存大小。默认为64M-vv用very vrebose模式启动,调试信息和错误输出到控制台-d作为daemon在后台启动上面四个是常用的启动选项,其他还有很多,通过
$ /usr/local/bin/memcached -h
命令可以显示。许多选项可以改变memcached的各种行为, 推荐读一读。
用客户端连接
许多语言都实现了连接memcached的客户端,其中以Perl、PHP为主。 仅仅memcached网站上列出的语言就有
- Perl
- PHP
- Python
- Ruby
- C#
- C/C++
- Lua
等等。
- memcached客户端API:http://www.danga.com/memcached/apis.bml
这里介绍通过mixi正在使用的Perl库链接memcached的方法。
使用Cache::Memcached
Perl的memcached客户端有
- Cache::Memcached
- Cache::Memcached::Fast
- Cache::Memcached::libmemcached
等几个CPAN模块。这里介绍的Cache::Memcached是memcached的作者Brad Fitzpatric的作品, 应该算是memcached的客户端中应用最为广泛的模块了。
- Cache::Memcached - search.cpan.org: http://search.cpan.org/dist/Cache-Memcached/
使用Cache::Memcached连接memcached
下面的源代码为通过Cache::Memcached连接刚才启动的memcached的例子。
#!/usr/bin/perl use strict; use warnings; use Cache::Memcached; my $key = "foo"; my $value = "bar"; my $expires = 3600; # 1 hour my $memcached = Cache::Memcached->new({ servers => ["127.0.0.1:11211"], compress_threshold => 10_000 }); $memcached->add($key, $value, $expires); my $ret = $memcached->get($key); print "$ret\n";
在这里,为Cache::Memcached指定了memcached服务器的IP地址和一个选项,以生成实例。 Cache::Memcached常用的选项如下所示。
选项说明servers用数组指定memcached服务器和端口compress_threshold数据压缩时使用的值namespace指定添加到键的前缀另外,Cache::Memcached通过Storable模块可以将Perl的复杂数据序列化之后再保存, 因此散列、数组、对象等都可以直接保存到memcached中。
保存数据
向memcached保存数据的方法有
- add
- replace
- set
它们的使用方法都相同:
my $add = $memcached->add( '键', '值', '期限' ); my $replace = $memcached->replace( '键', '值', '期限' ); my $set = $memcached->set( '键', '值', '期限' );
向memcached保存数据时可以指定期限(秒)。不指定期限时,memcached按照LRU算法保存数据。 这三个方法的区别如下:
选项说明add仅当存储空间中不存在键相同的数据时才保存replace仅当存储空间中存在键相同的数据时才保存set与add和replace不同,无论何时都保存获取数据
获取数据可以使用get和get_multi方法。
my $val = $memcached->get('键'); my $val = $memcached->get_multi('键1', '键2', '键3', '键4', '键5');
一次取得多条数据时使用get_multi。get_multi可以非同步地同时取得多个键值, 其速度要比循环调用get快数十倍。
删除数据
删除数据使用delete方法,不过它有个独特的功能。
$memcached->delete('键', '阻塞时间(秒)');
删除第一个参数指定的键的数据。第二个参数指定一个时间值,可以禁止使用同样的键保存新数据。 此功能可以用于防止缓存数据的不完整。但是要注意,set函数忽视该阻塞,照常保存数据
增一和减一操作
可以将memcached上特定的键值作为计数器使用。
my $ret = $memcached->incr('键'); $memcached->add('键', 0) unless defined $ret;
增一和减一是原子操作,但未设置初始值时,不会自动赋成0。因此, 应当进行错误检查,必要时加入初始化操作。而且,服务器端也不会对 超过2 32时的行为进行检查。
总结
这次简单介绍了memcached,以及它的安装方法、Perl客户端Cache::Memcached的用法。 只要知道,memcached的使用方法十分简单就足够了。
下次由前坂来说明memcached的内部结构。了解memcached的内部构造, 就能知道如何使用memcached才能使Web应用的速度更上一层楼。 欢迎继续阅读下一章。
版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接以及本声明。
Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Magnet-Link ist eine Link-Methode zum Herunterladen von Ressourcen, die bequemer und effizienter ist als herkömmliche Download-Methoden. Mit Magnet-Links können Sie Ressourcen im Peer-to-Peer-Verfahren herunterladen, ohne auf einen Zwischenserver angewiesen zu sein. In diesem Artikel erfahren Sie, wie Sie Magnetlinks verwenden und worauf Sie achten sollten. 1. Was ist ein Magnet-Link? Ein Magnet-Link ist eine Download-Methode, die auf dem P2P-Protokoll (Peer-to-Peer) basiert. Über Magnet-Links können Benutzer eine direkte Verbindung zum Herausgeber der Ressource herstellen, um die gemeinsame Nutzung und das Herunterladen von Ressourcen abzuschließen. Im Vergleich zu herkömmlichen Download-Methoden magnetisch

In letzter Zeit haben viele Benutzer den Editor gefragt, wie man Links herunterlädt, die mit 115:// beginnen? Wenn Sie Links herunterladen möchten, die mit 115:// beginnen, müssen Sie den 115-Browser verwenden. Nachdem Sie den 115-Browser heruntergeladen haben, schauen wir uns das unten vom Herausgeber zusammengestellte Download-Tutorial an. Einführung zum Herunterladen von Links, die mit 115:// beginnen. 1. Melden Sie sich bei 115.com an, laden Sie den 115-Browser herunter und installieren Sie ihn. 2. Geben Sie Folgendes ein: chrome://extensions/ in die Adressleiste des 115-Browsers, rufen Sie das Extension Center auf, suchen Sie nach Tampermonkey und installieren Sie das entsprechende Plug-in. 3. Geben Sie in die Adressleiste des Browsers 115 ein: Grease Monkey Script: https://greasyfork.org/en/

Das SNMP-Protokoll ist ein einfaches Netzwerkverwaltungsprotokoll. Dieses Protokoll kann das Netzwerkverwaltungssystem unterstützen und wird verwendet, um zu überwachen, ob bei den mit dem Netzwerk verbundenen Geräten Probleme bei der Verwaltung auftreten SNMP ist mit dem Fehlercode 0x8024402C fehlgeschlagen. Was tun? Benutzer können Powershell als Administrator starten, um Benutzern die Lösung für den Fehlercode 0x8024402C bei der Installation von SNMP in Win10 sorgfältig vorzustellen. Lösung für Win10 SNMP-Installationsfehler, Fehlercode 0x8024402C 1. Starten Sie Powershell als Administrator 1. Der erste Schritt besteht darin, das Win10-System auszuführen

Als Teil des WeChat-Ökosystems haben sich WeChat-Videokonten nach und nach zu einem wichtigen Werbeinstrument für Content-Ersteller und Händler entwickelt. Der Erhalt von Links zu Videokonten auf dieser Plattform ist für das Teilen und Verbreiten von Inhalten von entscheidender Bedeutung. Im Folgenden wird detailliert beschrieben, wie Sie den Link zum WeChat-Videokonto erhalten und wie Sie Produktlinks zum Videokonto hinzufügen, um den Verbreitungseffekt des Inhalts zu verbessern. 1. Wie erhalte ich den Link zum WeChat-Videokonto? Nachdem Sie ein Video auf Ihrem WeChat-Videokonto gepostet haben, erstellt das System automatisch einen Videolink. Autoren können den Link nach der Veröffentlichung kopieren, um die Weitergabe und Verbreitung zu erleichtern. Nachdem Sie sich bei Ihrem WeChat-Videokonto angemeldet haben, können Sie die Startseite Ihres Videokontos durchsuchen. Auf der Startseite ist jedem Video ein entsprechender Link beigefügt, sodass Sie es direkt kopieren oder teilen können. 3. Videokonto suchen: Geben Sie den Namen des Videokontos in das WeChat-Suchfeld ein

Carla ist eine Open-Source-Simulationsplattform für autonomes Fahren, die zum Entwickeln und Testen von Algorithmen für autonomes Fahren entwickelt wurde. Im Folgenden finden Sie ein detailliertes Tutorial zur Installation von Carla auf dem Ubuntu20.04-System: Abhängigkeiten installieren: Öffnen Sie ein Terminalfenster und führen Sie den folgenden Befehl aus, um Carlas Abhängigkeiten zu installieren: sudoaptupdatesudoaptinstall-ybuild-essentialclang-10llvm-10python3-pippython3-devlibpng-devlibjpeg-devlibtiff5- devlibopenexr -devlibhdf5-devlibsquish-de

Mit der Popularität von Kurzvideoplattformen beginnen immer mehr YouTuber, Videokonten zum Erstellen und Bewerben von Inhalten zu nutzen. Videokonten können nicht nur persönliche Talente zur Schau stellen, sondern durch Produktverknüpfungen auch eine kommerzielle Monetarisierung ermöglichen. Um jedoch einen Link zu einem Videokonto hinzuzufügen, müssen bestimmte Bedingungen erfüllt sein. 1. Was sind die Voraussetzungen für einen Videolink? Die Authentifizierung des Videokontos ist eine Voraussetzung für das Hinzufügen von Links zu Ihrem Videokonto. Derzeit bieten große Kurzvideoplattformen wie Douyin und Kuaishou Zertifizierungsdienste an, die hauptsächlich zwei Arten umfassen: persönliche Zertifizierung und institutionelle Zertifizierung. Die persönliche Zertifizierung erfordert die Übermittlung echter Identitätsinformationen, während die institutionelle Zertifizierung die Bereitstellung von Zertifizierungsmaterialien relevanter Unternehmen oder Organisationen erfordert. Nach Abschluss der Authentifizierung können Benutzer Links zu ihren Videokonten hinzufügen, um die Glaubwürdigkeit und Autorität ihrer Konten zu erhöhen. Einer der Videolinks

Reihenfolge der SPDIFOUT-Verbindungsleitungen auf dem Motherboard. Ich bin kürzlich auf ein Problem bezüglich der Verdrahtungsreihenfolge der Drähte gestoßen. Ich habe online nachgesehen, dass 1, 2 und 4 Ausgang, +5 V und Masse entsprechen, während andere Informationen besagen, dass 1, 2 und 4 Ausgang, Masse und +5 V entsprechen. Am besten schauen Sie im Handbuch Ihres Motherboards nach. Wenn Sie das Handbuch nicht finden, können Sie es mit einem Multimeter messen. Suchen Sie zuerst nach der Erdung, dann können Sie die Reihenfolge der restlichen Verkabelung bestimmen. So schließen Sie die VDG-Verkabelung des Motherboards an. Wenn Sie die VDG-Verkabelung des Motherboards anschließen, müssen Sie ein Ende des VGA-Kabels an die VGA-Schnittstelle des Monitors und das andere Ende an die VGA-Schnittstelle der Grafikkarte des Computers anschließen. Bitte achten Sie darauf, es nicht an den VGA-Anschluss des Motherboards anzuschließen. Sobald die Verbindung hergestellt ist, können Sie es tun

Tomato Novel, diese beliebte Software zum Lesen von Romanen, verfügt nicht nur über reichhaltige und vielfältige Romanressourcen, sondern bietet auch exklusive Kategorien, sodass jeder Leser leicht seinen Lieblingslesestoff finden kann. Ob es sich um einen Klassiker oder ein beliebtes neues Werk handelt, Tomato Novels kann Ihre Lesebedürfnisse befriedigen. Sie können auch Ihre eigenen Updates veröffentlichen, Ihre Lesemeinungen und Erfahrungen teilen und soziale Funktionen implementieren. Viele Freunde wissen jedoch nicht, wie sie ihre eigenen Updates veröffentlichen sollen, sodass Benutzer, die mehr wissen möchten, einfach vorbeikommen ein Versuch. Wie poste ich Updates zu Tomato Novels? 1. Klicken Sie zunächst auf , um den My Page of Tomato Novel aufzurufen. 2. Klicken Sie dann auf das Avatar-Feld, um die Seite mit den persönlichen Informationen aufzurufen. 3. Klicken Sie dann auf das Bearbeitungsmuster, um die Dynamik zu veröffentlichen. 4. Nachdem Sie den Inhalt eingegeben haben, wählen Sie die Schaltfläche „Veröffentlichen“.
