Nâng CaoRedis iconRedis

Lua scripting trong Redis: tại sao cần dùng và các use case điển hình?

Lua script trong Redis chạy atomically — toàn bộ script không thể bị interrupt bởi command khác, đây là điểm mạnh so với MULTI/EXEC. Dùng lệnh EVAL script numkeys key [key ...] arg [arg ...] hoặc EVALSHA (dùng SHA hash của script đã load để tránh gửi lại script). Use case: rate limiting — đọc counter, kiểm tra limit, tăng counter, set TTL trong một atomic operation; distributed lock — check và set lock atomically; complex conditional update không thể implement bằng một Redis command. Ví dụ rate limiter: local current = redis.call('INCR', KEYS[1]); if current == 1 then redis.call('EXPIRE', KEYS[1], ARGV[1]) end; return current.

Lưu ý: Lua script block toàn bộ Redis trong khi chạy, không nên viết script chạy lâu; nên dùng SCRIPT LOAD để pre-load script và gọi bằng EVALSHA cho hiệu năng tốt hơn.

Xem toàn bộ Redis cùng filter theo level & chủ đề con.

Mở danh sách Redis