Heim > Backend-Entwicklung > PHP-Tutorial > Memcached::cas ausführliche Erklärung

Memcached::cas ausführliche Erklärung

高洛峰
Freigeben: 2016-10-17 10:20:50
Original
1256 Leute haben es durchsucht

Memcached::cas

(PECL memcached >= 0.1.0)

Memcached::cas – Werte vergleichen und austauschen

Beschreibung

public bool Memcached::cas ( float $cas_token , string $key , Mixed $value [, int $expiration ] )

Memcached::cas() führt eine „Check and Set“-Operation durch, daher it Der Wert kann nur geschrieben werden, wenn der dem Schlüssel entsprechende Wert nicht von anderen Clients geändert wurde, nachdem der aktuelle Client den Wert zum letzten Mal abgerufen hat. Die Prüfung erfolgt über den Parameter cas_token. Dieser Parameter ist ein eindeutiger 64-Bit-Wert, der von Memcach einem vorhandenen Element zugewiesen wird. Informationen zum Abrufen dieses Werts finden Sie in der Dokumentation der Methodenreihe Memcached::get*(). Hinweis: Dieser Wert ist aufgrund der ganzzahligen Platzbeschränkungen von PHP vom Typ „double“.

Anmerkung: Dies ist ein sehr wichtiger Vorteil der Memcached-Erweiterung gegenüber der Memcache-Erweiterung. Mit einem solchen Konflikterkennungsmechanismus auf Systemebene (optimistische Sperre) (bereitgestellt von Memcache selbst) können wir die Datensicherheit bei hoher Parallelität gewährleisten. .

Parameter

cas_token

Der eindeutige Wert, der dem vorhandenen Element zugeordnet ist und von Memcache generiert wird.

Schlüssel

Der Schlüsselname, der zum Speichern des Werts verwendet wird.

Wert

Der gespeicherte Wert.

Ablauf

Ablaufzeit, Standardwert ist 0. Weitere Informationen finden Sie unter Ablaufzeit.

Rückgabewert

Gibt TRUE bei Erfolg oder FALSE bei Fehler zurück. Memcached::getResultCode() gibt Memcached::RES_DATA_EXISTS zurück, wenn festgestellt wird, dass ein Element seit dem letzten Abruf durch diesen Client beim Versuch, es zu speichern, von einem anderen Client geändert wurde.

Beispiel

Beispiel #1 Memcached::cas() Beispiel

<?php
$m = new Memcached();
$m->addServer(&#39;localhost&#39;, 11211);
do {
    /* 获取ip列表以及它的标记 */
    $ips = $m->get(&#39;ip_block&#39;, null, $cas);
    /* 如果列表不存在, 创建并进行一个原子添加(如果其他客户端已经添加, 这里就返回false)*/
    if ($m->getResultCode() == Memcached::RES_NOTFOUND) {
        $ips = array($_SERVER[&#39;REMOTE_ADDR&#39;]);
        $m->add(&#39;ip_block&#39;, $ips);
    /* 其他情况下,添加ip到列表中, 并以cas方式去存储, 这样当其他客户端修改过, 则返回false */
    } else { 
        $ips[] = $_SERVER[&#39;REMOTE_ADDR&#39;];
        $m->cas($cas, &#39;ip_block&#39;, $ips);
    }   
} while ($m->getResultCode() != Memcached::RES_SUCCESS);
?>
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage