집합을 사용할 수 있다면 PHP memcache의 대체 기능은 무엇입니까? 변수가 있더라도 set은 자동으로 바꿉니다.Memcache의 대체 기능은 무엇입니까?
세트 대신 교체를 사용하는 것이 더 나은 예가 있습니까?
감사합니다.
집합을 사용할 수 있다면 PHP memcache의 대체 기능은 무엇입니까? 변수가 있더라도 set은 자동으로 바꿉니다.Memcache의 대체 기능은 무엇입니까?
세트 대신 교체를 사용하는 것이 더 나은 예가 있습니까?
감사합니다.
'set '대신'replace'를 사용하는 것이 언제 더 좋은지에 대한 @ evening의 두 번째 질문을 설명 할 수 있습니까? –
예를 들어 설명 할 수 없지만 replace()를 사용할 필요가 없습니다. – ZoFreX
이 ZoFreX의 대답에 이어
세트 더 사용 동일한 키에 대해 한 번 이상 사용하면 예기치 않은 결과가 발생합니다. 즉, "바꾸기"로 동작하지 않지만 대신 동일한 키에 대해 둘 이상의 값을 "설정"하는 것처럼 보입니다. 「get」는 임의의 값을 돌려줍니다.
다중 서버 설정에서 테스트되었습니다. 하나의 서버 만있는 경우 동작이 다를 수 있습니다.
set()
단지 키를 추가하는 반면
는, 그래서 진실로 replace()
먼저 기존 키를 찾습니다하고 (있는 경우)를 교체하십시오. replace()
을 먼저 사용하는 것이 가장 좋습니다. 키를 찾을 수없는 경우 FALSE
을 반환한다고 생각하면 add()
이 set()
이 아닌 키가 존재하지 않음을 알고 있기 때문에 사용하게됩니다. 이렇게하면 의도하지 않은 사고가 발생하지 않습니다. 따라서 코드는 다음과 같을 수 있습니다.
$replace = Memcached::replace($key, $var);
if (! $replace)
{
$set = Memcached::add($key, $var);
}
일반적으로 키를 자주 사용하는 경우 대체해야합니다./etc를 설정/추가하면 아주 새로운 항목이 만들어지며 조각화와 많은 정리를 할 수 있습니다. Replace는 이미 할당 된 메모리를 재사용합니다 (가능한 경우). 더 안정적이고 효율적으로 수행 할 수 있습니다. 실패 할 경우 add/set을 사용하면 계속 작동합니다.
글쎄, [매뉴얼 페이지] (http://php.net/memcached.replace)는 "Memcached :: replace()는 Memcached :: set()과 비슷하지만 키가 작동하면 작업이 실패합니다 서버에 존재하지 않습니다. " – Gumbo