복붙노트

[REDIS] 레디 스에서 거래 대 파이프 라이닝

REDIS

레디 스에서 거래 대 파이프 라이닝

우리가 레디 스에서 트랜잭션을 사용하는 경우, 그것은 기본적으로 모든 파이프 라인 트랜잭션 내에서 명령. EXEC이 발사 될 때, 그때 모든 명령 따라서 항상 여러 명령의 자성을 유지, 함께 실행됩니다.

이 파이프 라인과 동일 아닌가?

어떻게 파이프 라인 및 트랜잭션 다른 무엇입니까? 또한, 왜이 레디 스의 충분할의 단일 스레드 성격합니까? 왜 우리는 명시 적으로 파이프 라인 / 트랜잭션을 필요합니까?

해결법

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

    1.파이프 라이닝은 주로 네트워크 최적화입니다. 그것은 본질적으로 한 번에 서버에 명령과 선박을 잔뜩 최대 클라이언트 버퍼를 의미한다. 명령은 트랜잭션에서 실행되도록 보장되지 않습니다. 여기 장점은 모든 명령에 대한 네트워크 왕복 시간을 절약 할 수있다.

    파이프 라이닝은 주로 네트워크 최적화입니다. 그것은 본질적으로 한 번에 서버에 명령과 선박을 잔뜩 최대 클라이언트 버퍼를 의미한다. 명령은 트랜잭션에서 실행되도록 보장되지 않습니다. 여기 장점은 모든 명령에 대한 네트워크 왕복 시간을 절약 할 수있다.

    개별 명령이 항상 원하지만, 다른 두 클라이언트로부터 소정의 명령은, 예를 들면 그 사이에 교번 순서로 실행할 수 있도록 레디 스는 단일 스레드이다.

    멀티 / 간부는, 그러나, 다른 클라이언트가 멀티 / 간부 인 순서로 명령 사이에 명령을 실행하지 않습니다 보장합니다.

  2. from https://stackoverflow.com/questions/29327544/pipelining-vs-transaction-in-redis by cc-by-sa and MIT license