복붙노트

[REDIS] 실행 파이프 라인 순서를 레디 스

REDIS

실행 파이프 라인 순서를 레디 스

나는 문질러 레디 스 보석을 사용하고 있습니다. 내가 예를 들어한다면 궁금 :

redis.pipelined do
    REDIS.del("users:#{current_user_id}:i-unread")
    REDIS.lpush("users:#{current_user_id}:i-read", items)
    REDIS.ltrim("users:#{current_user_id}:i-read", 0, Interaction::MAX_INTERACTIONS)
end

실행 순서가 보장된다?

해결법

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

    1.물론 순서는, 그렇지 않으면 쓸모가있을 것입니다 파이프 라이닝, 보장됩니다. 당신은 항상 코드를 볼 수 있습니다. 예를 들어,이 테스트는 명확하게 명령을 순차적으로 실행하는 것으로 가정합니다 : https://github.com/redis/redis-rb/blob/master/test/pipelining_commands_test.rb#L32

    물론 순서는, 그렇지 않으면 쓸모가있을 것입니다 파이프 라이닝, 보장됩니다. 당신은 항상 코드를 볼 수 있습니다. 예를 들어,이 테스트는 명확하게 명령을 순차적으로 실행하는 것으로 가정합니다 : https://github.com/redis/redis-rb/blob/master/test/pipelining_commands_test.rb#L32

    def test_bulk_and_multi_bulk_commands_mixed
      r.pipelined do
        r.lpush "foo", "s1"
        r.lpush "foo", "s2"
        r.mset("baz", "s3", "qux", "s4")
      end
    
      assert_equal 2, r.llen("foo")
      assert_equal "s2", r.lpop("foo")
      assert_equal "s1", r.lpop("foo")
      assert_equal "s3", r.get("baz")
      assert_equal "s4", r.get("qux")
    end
    
  2. ==============================

    2.예,이 보장됩니다. 일반적으로, 쿼리의 순서를 변경하지 않도록 파이프 라인은, 더 많은 메모리에 서버 응답을 대기보다 복잡 아무것도 레디 스.

    예,이 보장됩니다. 일반적으로, 쿼리의 순서를 변경하지 않도록 파이프 라인은, 더 많은 메모리에 서버 응답을 대기보다 복잡 아무것도 레디 스.

  3. from https://stackoverflow.com/questions/17634826/redis-pipelined-order-of-execution by cc-by-sa and MIT license