Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung der Integration und Nutzung von PHP und Memcached

Ausführliche Erläuterung der Integration und Nutzung von PHP und Memcached

WBOY
WBOYOriginal
2023-06-25 13:04:40988Durchsuche

Mit der Entwicklung von Webanwendungen werden immer mehr Anwendungen vollständige Speicher-Caching-Systeme verwenden, um eine bessere Leistung und höhere Skalierbarkeit zu bieten. In vielen Fällen wird Memcached zur bevorzugten Lösung. In diesem Artikel wird die integrierte Verwendung von PHP und Memcached sowie einige damit verbundene Verwendungstipps vorgestellt.

Memcached ist ein leistungsstarkes In-Memory-Objekt-Caching-System, mit dem dynamische Webanwendungen beschleunigt werden können. Memcached wurde ursprünglich von Brad Fitzpatrick mit dem Hauptzweck für seine LiveJournal-Website für soziale Netzwerke erstellt. Memcached ist als verteiltes Caching-System konzipiert und daher skalierbar und leistungsstark.

Memcached in PHP verwenden

Es ist einfach, PHP-Anwendungen und Memcached über die PECL-Erweiterung in PHP zu integrieren. Das Folgende ist ein einfaches Beispiel, das PHP verwendet, um die grundlegenden Get- und Set-Vorgänge von Memcached zu implementieren:

<?php
//连接Memcached服务器
$memcached = new Memcached();
$memcached->addServer("localhost", 11211);

//存储数据
$memcached->set("key1", "value1");

//获取数据
$value = $memcached->get("key1");
echo $value;
?>

Im obigen Beispiel verwenden wir zuerst das Memcached-Objekt, um eine Verbindung zu einem Memcached-Server herzustellen, und verwenden dann set() Die Funktion speichert ein Schlüssel-Wert-Paar im Cache und verwendet schließlich die Funktion get(), um den Schlüsselwert aus dem Cache abzurufen. Sehr einfach und intuitiv. set()函数将一个key-value对存储到缓存中,最后使用get()函数从缓存中获取key的值。非常简单和直观。

在应用程序中使用Memcached

在实际应用程序中,使用Memcached的最常见方式是将其用于缓存和提高性能的数据,例如数据库查询结果、模板和其他计算密集型计算结果等。Memcached还支持将其作为锁定系统来控制并发请求,以避免冲突。

以下是一个使用Memcached缓存MySQL查询结果的示例:

<?php
//连接Memcached服务器
$memcached = new Memcached();
$memcached->addServer("localhost", 11211);

//查询MySQL数据库
$results = mysqli_query($con, "SELECT * FROM users WHERE status=1");

//循环结果
while($row = mysqli_fetch_array($results)) {
   //将结果存储到缓存中
   $memcached->set($row['user_id'], $row);
}

//关闭MySQL连接
mysqli_close($con);

//获取结果
$user_id = 123;
$result = $memcached->get($user_id);
?>

在上述示例中,我们首先连接了Memcached服务器,并查询了MySQL数据库,将结果存储在缓存中。然后我们获取了一个特定的结果。如果这个结果已经被缓存过了,那么它将被立即返回,避免了重复查询这个结果的需要。

在实际应用程序中,当使用Memcached缓存巨大的数据对象时,我们建议使用Memcached的分布式机制。这一点将在下面的部分进行介绍。

使用Memcached的一些技巧

以下是一些使用Memcached的技巧,以提高性能和可靠性:

  1. 利用Memcached作为锁定系统

当并发请求同时访问共享资源时,可能会发生竞态条件。在这种情况下,Memcached可以用作分布式锁定系统,以避免并发请求冲突。比如我们要更新一个计数器,那么就可以使用Memcached作为锁定系统。

<?php
//连接Memcached服务器
$memcached = new Memcached();
$memcached->addServer("localhost", 11211);

//以自增方式计数
$key = "counter";
$counter = $memcached->increment($key);

//获取计数器结果
echo "Counter: ".$counter;
?>

在上述示例中,我们使用Memcached对象连接了Memcached服务器,并使用increment()函数将计数器的值自增1。这样就能避免多个并发请求对计数器的竞争。

  1. 利用选项和过期时间

Memcached不仅可以存储数据,还可以使用附加选项来控制缓存数据的行为。使用过期时间选项,可以确定每个键值对的存储有效期限,从而加快缓存的轮换。

<?php
//连接Memcached服务器
$memcached = new Memcached();
$memcached->addServer("localhost", 11211);

//设置过期时间
$memcached->set("key1", "value1", 3600);

//获取具有过期时间的键值对
$value = $memcached->get("key1");

//除了过期时间之外,可以使用其他选项
$memcached->set("key1", "value1", 3600, 0);
$memcached->set("key1", "value1", 0, 100);
?>

在上述示例中,我们首先使用set()函数存储键值对,并设置了一个过期时间。然后我们使用get()函数获取这个键值对。如果缓存中的数据已经过期,则返回空值。

  1. 利用Memcached的扩展性

Memcached的设计目标之一是其可扩展性。这一点是通过将Memcached服务嵌入到内部集群中实现的,以同时利用多台计算机提供缓存服务。

<?php
//连接Memcached服务器
$memcached = new Memcached();
$memcached->addServers(array(
   array("server1", 11211, 33),
   array("server2", 11211)
));

//保存数据到Memcached服务器
$memcached->set("key1", "value1");

//从Memcached服务器获取数据
$value = $memcached->get("key1");
?>

在上述示例中,我们使用addServers()函数设置多台Memcached服务器,以便将请求分发到多个服务器。然后,我们使用set()get()

Memcached in Anwendungen verwenden

In realen Anwendungen wird Memcached am häufigsten zum Zwischenspeichern und zur Leistungsverbesserung von Daten verwendet, z. B. Datenbankabfrageergebnissen, Vorlagen und anderen rechenintensiven Berechnungsergebnissen. Memcached unterstützt es auch als Sperrsystem zur Steuerung gleichzeitiger Anfragen, um Konflikte zu vermeiden.

Hier ist ein Beispiel für die Verwendung von Memcached zum Zwischenspeichern von MySQL-Abfrageergebnissen: 🎜rrreee🎜Im obigen Beispiel haben wir zuerst eine Verbindung zum Memcached-Server hergestellt und die MySQL-Datenbank abgefragt, um die Ergebnisse im Cache zu speichern. Dann erhalten wir ein konkretes Ergebnis. Wenn das Ergebnis zwischengespeichert wurde, wird es sofort zurückgegeben, sodass keine wiederholte Abfrage des Ergebnisses erforderlich ist. 🎜🎜In tatsächlichen Anwendungen empfehlen wir bei der Verwendung von Memcached zum Zwischenspeichern großer Datenobjekte die Verwendung des verteilten Mechanismus von Memcached. Dies wird im folgenden Abschnitt behandelt. 🎜🎜Einige Tipps zur Verwendung von Memcached🎜🎜Hier einige Tipps zur Verwendung von Memcached zur Verbesserung der Leistung und Zuverlässigkeit: 🎜
  1. Verwenden Sie Memcached als Sperrsystem
🎜Wenn gleichzeitige Anforderungen gleichzeitig Zugriff erfordern. Wann Bei der gemeinsamen Nutzung von Ressourcen kann es zu Rennbedingungen kommen. In diesem Fall kann Memcached als verteiltes Sperrsystem verwendet werden, um widersprüchliche gleichzeitige Anforderungen zu vermeiden. Wenn wir beispielsweise einen Zähler aktualisieren möchten, können wir Memcached als Schließsystem verwenden. 🎜rrreee🎜Im obigen Beispiel haben wir das Memcached-Objekt verwendet, um eine Verbindung zum Memcached-Server herzustellen, und die Funktion increment() verwendet, um den Zählerwert um 1 zu erhöhen. Dies vermeidet die Konkurrenz um den Zähler durch mehrere gleichzeitige Anfragen. 🎜
  1. Optionen und Ablaufzeiten nutzen
🎜Memcached speichert nicht nur Daten, sondern Sie können auch zusätzliche Optionen verwenden, um das Verhalten zwischengespeicherter Daten zu steuern. Mit der Option „Ablaufzeit“ können Sie bestimmen, wie lange jedes Schlüssel-Wert-Paar gespeichert wird, und so die Cache-Rotation beschleunigen. 🎜rrreee🎜Im obigen Beispiel verwenden wir zunächst die Funktion set(), um das Schlüssel-Wert-Paar zu speichern und eine Ablaufzeit festzulegen. Dann verwenden wir die Funktion get(), um dieses Schlüssel-Wert-Paar zu erhalten. Wenn die Daten im Cache abgelaufen sind, wird ein Nullwert zurückgegeben. 🎜
  1. Die Skalierbarkeit von Memcached nutzen
🎜Eines der Designziele von Memcached ist seine Skalierbarkeit. Dies wird durch die Einbettung des Memcached-Dienstes in einen internen Cluster erreicht, um mehrere Computer für die gleichzeitige Bereitstellung von Caching-Diensten zu nutzen. 🎜rrreee🎜Im obigen Beispiel verwenden wir die Funktion addServers(), um mehrere Memcached-Server einzurichten, um Anfragen an mehrere Server zu verteilen. Anschließend verwenden wir die Funktionen set() und get(), um die Daten zu speichern und auf dem Server abzurufen. Dieser Verteilungsmechanismus ist einer der leistungsstärksten Skalierbarkeitsmechanismen von Memcached. 🎜🎜Fazit🎜🎜Memcached ist ein leistungsstarkes In-Memory-Objekt-Caching-System, mit dem dynamische Webanwendungen beschleunigt werden können. PHP-Erweiterungen erleichtern die Integration von PHP-Anwendungen in Memcached und verbessern so die Anwendungsleistung und Skalierbarkeit. Die Verwendung einiger Memcached-Techniken kann uns dabei helfen, den Memcached-Dienst besser zu nutzen und die Leistung und Zuverlässigkeit der Anwendung zu verbessern. 🎜

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Integration und Nutzung von PHP und Memcached. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn