memcache 높 은 병행 제어
2255 단어 memcache
다음은 수 집 된 memcache 의 병행 제어 글 입 니 다.
http://hi.baidu.com/chen_cong_520/item/1f5a230c93fd513cf2eafc29
memcached 의 원자 적 조작
memcached 는 원자 입 니까?당연 하지!좋 습 니 다. 모든 memcached 에 보 내 진 하나의 명령 은 완전 원자 입 니 다.같은 데이터 에 대해 set 명령 과 get 명령 을 동시에 보 냈 다 면 상대방 에 게 영향 을 주지 않 습 니 다.그것들 은 직렬 화 되 어 선후 로 실 행 될 것 이다.다 중 스 레 드 모드 에서 도 모든 명령 은 원자 입 니 다. 프로그램 에 bug:) 명령 서열 이 원자 가 아 닌 경 우 를 제외 하고.get 명령 을 통 해 아 이 템 을 가 져 왔 습 니 다. 수정 한 다음 memcached 로 설정 하려 면 이 아 이 템 이 다른 프로 세 스 (process, 운영 체제 의 프로 세 스 가 아 닙 니 다) 에 의 해 작 동 되 지 않 았 다 는 것 을 보장 하지 않 습 니 다.동시 다발 적 인 상황 에서 다른 프로 세 스 set 의 item 을 복사 할 수도 있 습 니 다.memcached 1.2.5 와 더 높 은 버 전 은 gets 와 ca 명령 을 제공 하여 위의 문 제 를 해결 할 수 있 습 니 다.gets 명령 을 사용 하여 키 의 item 을 조회 하면 memcached 는 이 item 의 현재 값 의 유일한 표 지 를 되 돌려 줍 니 다.이 아 이 템 을 덮어 쓰 고 memcached 에 쓰 려 면 카 스 명령 을 통 해 유일한 표 지 를 memcached 에 보 낼 수 있 습 니 다.이 아 이 템 이 memcached 에 저 장 된 유일한 표지 가 귀하 가 제공 한 것 과 일치 하면 쓰기 작업 이 성공 할 것 입 니 다.다른 프로 세 스 가 이 아 이 템 을 수정 하면 이 아 이 템 이 memcached 에 저 장 된 유일한 표지 가 바 뀌 고 쓰기 작업 이 실 패 됩 니 다.
이 글 에 따 르 면 phop 매 뉴 얼 에서 memcache 의 카 스 방법 을 찾 아 원자 적 인 조작 을 실현 했다.
http://php.net/manual/zh/memcached.cas.php
그 중의 예:
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
do {
/* ip */
$ips = $m->get('ip_block', null, $cas);
/* , ( , false)*/
if ($m->getResultCode() == Memcached::RES_NOTFOUND) {
$ips = array($_SERVER['REMOTE_ADDR']);
$m->add('ip_block', $ips);
/* , ip , cas , , false */
} else {
$ips[] = $_SERVER['REMOTE_ADDR'];
$m->cas($cas, 'ip_block', $ips);
}
} while ($m->getResultCode() != Memcached::RES_SUCCESS);
?>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Memcache-Java-Client-Release 원본 읽기(5)그 중 한 노드가 일부 원인으로 인해 캐시 서비스를 제공하지 못할 때(예를 들어 네트워크 고장, 서버 실례 다운) 이 메커니즘은 다른 사용 가능한 서비스 노드를 검색한다. 본인은 테스트 결과로 캐시를 찾을 수 없습니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.