복붙노트

[REDIS] 연결 해제 명령은 항상 더 나은 DEL 명령보다?

REDIS

연결 해제 명령은 항상 더 나은 DEL 명령보다?

레디 스 4.0 레디 스 메모리의 키를 삭제하는 새로운 명령 UNLINK있다.

하나의 연결을 해제로 대신 DEL 항상 (100 % 배) 사용 UNLINK가 블로킹되어 수 있도록 DEL 달리, 맞죠?

해결법

  1. ==============================

    1.하나가 더있는 논의하기 전에,이 명령의 차이를 살펴 보자. DEL 및 UNLINK 모두 차단 모드에서 중요한 부분 무료. 그리고 차이점은 값 부분을 확보하는 방법입니다.

    하나가 더있는 논의하기 전에,이 명령의 차이를 살펴 보자. DEL 및 UNLINK 모두 차단 모드에서 중요한 부분 무료. 그리고 차이점은 값 부분을 확보하는 방법입니다.

    DEL은 항상 블록 모드의 값 부분을 해제합니다. 그러나, 값이 너무 큰 경우, 예를 들어 오랜 시간 동안 큰 LIST 또는 HASH, 차단 레디 스에 대한 너무 많은 할당. 이 문제를 해결하기 위해, 레디 스는 '는 비 차단'삭제 UNLINK 명령, 즉을 구현한다.

    사실, UNLINK는 항상 비 차단 / 비동기 아닙니다. 값이 작 으면, 예를 들어 LIST 또는 HASH의 크기 값이 즉시 해제되며, 64 미만이다. 이러한 방법으로, UNLINK는 DEL보다 몇 함수 호출 비용을 제외하고, 거의 DEL과 동일합니다. 값이 큰 경우, 레디 스은리스트로 값을 둔다 한 값, 즉 비 - 블로킹없는 다른 스레드에 의해 해제 될 것이다. 이러한 방법으로, 메인 스레드는 백그라운드 스레드 일부 동기화를 수행 할 수 있으며, 그 또한 비용입니다.

    값이 작을 경우 결론적으로, DEL 연결 해제 좋은 같이, 적어도이다. 값이 매우 큰 경우, 예를 들어 항목의 수천 또는 수백만 LIST는 UNLINK 훨씬 더 DEL보다. 당신은 항상 안전하게 UNLINK와 DEL을 대체 할 수 있습니다. 당신이 스레드 동기화가 문제가된다 찾을 경우, (멀티 스레딩은 항상 두통이다), 당신은 DEL으로 롤백 할 수 있습니다.

  2. ==============================

    2.예. 게으른 레디 스의 읽기가 antirez에서 레디 스 더 드셔주세요. 하지만 이유는 링크 해제 명령을 블로킹 것이 아니다. 그 이유는 링크 해제가 델보다 똑똑입니다.

    예. 게으른 레디 스의 읽기가 antirez에서 레디 스 더 드셔주세요. 하지만 이유는 링크 해제 명령을 블로킹 것이 아니다. 그 이유는 링크 해제가 델보다 똑똑입니다.

    작은 키를 DEL를 사용하여, 거대한 키에 대한 UNLINK를 사용하는 등의 큰 목록 또는 세트로 : 또한, 나는 더 빠른 방법은 우리가 레디 스에 대한 결정을 할 생각합니다. 우리는 레디 스의 불필요한 계산을 줄일 수 있습니다.

  3. from https://stackoverflow.com/questions/45818371/is-the-unlink-command-always-better-than-del-command by cc-by-sa and MIT license