
개발을 하다 보면 여러 Redis 명령어를 하나의 흐름으로 묶어 실행해야 하는 경우가 있다.나의 경우, Rate Limit 기능을 Redis로 구현하면서 이런 상황을 마주했다.1. 현재 window 만큼 sorted set 자르기2. sorted set의 크기 가져오기3. 해당 크기가 limit보다 작다면, 현재의 timestamp를 sorted set에 추가하기이 모든 과정은 반드시 원자적(atomic) 으로 보장돼야 한다.만약 2번 → 3번 실행 사이에 다른 요청이 들어오면, 잘못된 limit 체크 결과가 나올 수 있기 때문이다.이를 해결하기 위해, Redis에서는 여러 명령어를 하나의 단위로 실행할 수 있는 방법을 제공한다. 그중 하나가 Lua Script이다.Lua Script란?Redis 공식 ..