ADD와 SET의 차이점을 이해하지 못합니다. 마치 ADD에 SET가 포함되어 있거나 무언가가 있고 SET가 덮어 쓰면 ADD가 false를 반환하는 것처럼 보입니다. 감사!
편집 : 내 구체적인 질문은 "추가하지 않고 설정하거나 설정하지 않고 언제 추가를 사용합니까?"입니다.
ADD와 SET의 차이점을 이해하지 못합니다. 마치 ADD에 SET가 포함되어 있거나 무언가가 있고 SET가 덮어 쓰면 ADD가 false를 반환하는 것처럼 보입니다. 감사!
편집 : 내 구체적인 질문은 "추가하지 않고 설정하거나 설정하지 않고 언제 추가를 사용합니까?"입니다.
답변:
당신은 이미 첫 번째 질문에 대한 답을 얻었습니다. 의도 ADD
는 키가 존재하지 않을 때만 작동하고 키의 존재 SET
여부에 관계없이 값을 업데이트하는 것입니다. SQL에 익숙하다면 INSERT
쿼리 ( ADD
)와 UPDATE
( SET
) 의 차이와 비슷합니다 .
부록 질문과 관련하여 목적에 맞는 것을 사용하십시오. 나는 그 말을 SET
당신이 단지 말하고 싶은 것이 더 일반적이기 때문에,보다 일반적인 작업을 할 것 "나는 키가 원하는 foo
값을 가지고가 bar
, 나는 이미 거기에 있었다 여부를 걱정하지 않는다". 그러나 키가 이미 캐시에 없다는 것을 알아야하는 경우가 빈번한 경우가 있습니다.
ADD
적절한 시기를 염두에 두는 예 는 memcache에 세션을 저장하는 것입니다 (그렇지 않으면 권장하지 않습니다). 세션 ID를 임의로 생성하거나 해싱을 통해 원하지 않는 경우 한 사용자에게 다른 사용자의 데이터에 대한 액세스 권한을 부여하므로 기존 키와 동일한 키로 새 세션을 작성합니다. 이 경우 세션을 만들 때을 사용 ADD
하고 실패 상태를 반환 한 경우 새 세션 ID를 생성하고 다시 시도해야합니다. 물론 세션을 업데이트하면 SET
사용자가 응용 프로그램을 진행하는 동안 사용됩니다.
REPLACE
심지어 SQL 아니지만 ... 그것은 (웃음) "느슨하게 MySQL을 이해하는 SQL에서 영감을 언어"의
user-id 'womble'의 위의 답변 외에도 다음 사항도 고려하십시오.
'add'가 아닌 'set' 이있는 경쟁 조건의 가능성 . Nick Johnson의 답변에 대한 아래 링크를 참조하십시오 : https : //.com/questions/13234556/using-memcache-add-instead-of-set
'add'가 할 것을 알고 있다면 'set'을 사용하지 마십시오. 이것은 RPC 호출이므로 네트워크를 통한 데이터 전송 을 피하기위한 것 입니다. 그리고 거의 모든 시간은 memcache에서 키-값 쌍을 찾는 것과 달리 네트워크 트래픽에 의해 소비됩니다. 따라서 최상의 네트워크 트래픽을 피할 수 있다면 응답 시간이 더 빠릅니다.
Appstats ( https://developers.google.com/appengine/docs/python/tools/appstats(Google ))를 참조하고 위의 2 번 포인트를 더 이해하려면 http://www.youtube.com/watch를 참조하십시오. Guido Van Rossum (@Google)의 ? v = bvp7CuBWVgA