ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 반복적인 lua script를 사용한다면 EVAL 대신 EVALSHA 로
    카테고리 없음 2024. 8. 4. 15:43

    EVAL과 EVALSHA는 Redis에서 Lua 스크립트를 실행하는 명령어로, 둘 다 Lua 스크립트를 사용하여 복잡한 로직을 Redis 서버 측에서 실행할 수 있게 해준다.

     

    EVAL vs. EVALSHA 비교

    1. EVAL (Evaluate):
      • EVAL은 Lua 스크립트를 처음부터 Redis 서버로 보내고 실행한다.
      • Redis는 EVAL로 받은 스크립트를 실행하기 전에 해당 스크립트를 해시화하고, 캐시에 저장한다.
      • 매번 스크립트를 Redis 서버에 전달하고 컴파일해야 하므로 네트워크 및 CPU 리소스가 더 많이 소모된다.
    2. EVALSHA (Evaluate SHA-1):
      • EVALSHA는 이미 Redis 서버에 로드된 Lua 스크립트의 해시(SHA-1) 값을 사용하여 스크립트를 실행한다.
      • EVALSHA는 스크립트의 해시를 사용하여 스크립트를 다시 전달하지 않으므로 네트워크 오버헤드가 줄어든다.
      • 스크립트의 해시값으로 요청을 보내기 때문에 Redis 서버는 이미 컴파일된 스크립트를 찾아 즉시 실행한다.
      • 스크립트를 매번 컴파일할 필요가 없기 때문에 CPU 사용량이 적어지고 성능이 개선된다.

     

    성능과 CPU 측면에서의 차이점

    1. 네트워크 효율성:
      • EVAL은 스크립트를 매번 서버에 전달하므로 네트워크 트래픽이 증가한다.
      • EVALSHA는 SHA-1 해시값만 전달하므로 네트워크 오버헤드가 크게 줄어든다.
    2. CPU 효율성:
      • EVAL은 매번 스크립트를 파싱하고 컴파일해야 하므로 CPU 리소스를 더 많이 사용한다.
      • EVALSHA는 이미 컴파일된 스크립트를 실행하므로 CPU 사용량이 낮.
    3. 속도 개선:
      • EVALSHA는 기존의 컴파일된 스크립트를 재사용하므로 실행 속도가 EVAL에 비해 더 빠르다. 이 차이는 특히 반복적인 Lua 스크립트 실행에서 두드러진다.
    4. 캐시 효과:
      • EVALSHA는 Redis 서버의 스크립트 캐시를 적극 활용하므로 동일한 스크립트를 여러 번 실행할 때 성능 향상이 크다.

     

    반복적으로 동일한 Lua 스크립트를 실행해야 하는 상황에서는 EVALSHA가 훨씬 더 효율적이라고 볼 수 있을 것 같다. EVALSHA를 사용하면 스크립트를 처음 한 번만 로드하고, 이후에는 해당 스크립트의 SHA-1 해시값만 사용하여 실행하기 때문에 네트워크 트래픽이 줄고 CPU 리소스도 절약할 수 있다.

     

     

Designed by Tistory.