Memcached::cas 자세한 설명

高洛峰
풀어 주다: 2016-10-17 10:20:50
원래의
1232명이 탐색했습니다.

Memcached::cas

(PECL memcached >= 0.1.0)

Memcached::cas — 값 비교 및 ​​교환 ​​

설명

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

Memcached::cas()는 "확인 및 설정" 작업을 수행하므로, it 현재 클라이언트가 마지막으로 값을 검색한 후 해당 키에 해당하는 값이 다른 클라이언트에 의해 수정되지 않은 경우에만 값을 쓸 수 있습니다. 확인은 cas_token 매개변수를 통해 수행됩니다. 이 매개변수는 Memcach가 기존 요소에 할당한 고유한 64비트 값입니다. 이 값을 얻는 방법은 Memcached::get*() 메서드 시리즈의 문서를 확인하세요. 참고: 이 값은 PHP의 정수 공간 제한으로 인해 double 유형입니다.

주석: 이는 Memcache 확장에 비해 Memcached 확장의 매우 중요한 장점입니다. 이러한 시스템 수준 충돌 감지 메커니즘(낙관적 잠금)(Memcache 자체에서 제공)을 사용하면 높은 동시성에서 데이터 보안을 보장할 수 있습니다. .

매개변수

cas_token

Memcache에서 생성된 기존 요소와 관련된 고유 값입니다.

key

값을 저장하는 데 사용되는 키 이름입니다.

저장된 값입니다.

만료

만료 시간, 기본값은 0입니다. 자세한 내용은 만료 시간을 참조하세요.

반환 값

성공 시 TRUE, 실패 시 FALSE를 반환합니다. Memcached::getResultCode()는 요소를 저장하려고 할 때 이 클라이언트가 마지막으로 검색한 이후 다른 클라이언트에 의해 요소가 수정된 것으로 발견되면 Memcached::RES_DATA_EXISTS를 반환합니다.

예 #1 Memcached::cas() 예

<?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);
?>
로그인 후 복사


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿