Redis는 서버 측에서 Lua 스크립트를 실행할 수 있습니다 — 여러 명령어를 하나의 원자적 연산으로 실행합니다. 스크립트는 복잡한 원자적 로직을 가능하게 하고, 네트워크 왕복을 줄이며, Redis에서 다단계 원자적 연산을 하는 권장 방법입니다.
Lua 스크립트 실행
# EVAL은 Lua 스크립트를 실행; KEYS[]와 ARGV[]로 키와 인자 전달
EVAL "return redis.call('SET', KEYS[1], ARGV[1])" 1 mykey myvalue
# 스크립트는 여러 명령어와 로직을 원자적으로 실행 가능
EVAL "
local current = redis.call('GET', KEYS[1])
if current == ARGV[1] then
return redis.call('DEL', KEYS[1]) -- 값이 일치할 때만 삭제 (원자적 check-and-delete)
end
return 0
" 1 lock:resource mytoken
