Redis 腳本是由 Lua Script 搭配 redis 的 call 指令來完成與 server 端的溝通邏輯,主要好處:
- 可由腳本達到一次處理多條指令的效果,減少指令
來回往返時間(Round-trip delay time) - 支援
原子性操作 - 多個指令間可保有
關聯性,由此組合出更多樣化的功能 序列化執行,可當作交易使用
要注意的是:由於 Redis 腳本是序列化執行,當某個腳本執行時間太久,則會引起 server 的阻塞。
腳本使用方式
Redis 腳本主要以 key-value 形式儲存在 server 端內存,其中 value 為 Redis 腳本並且是 Lua 語法,而 key 為該 Redis 腳本經 SHA1 雜湊演算出來的值。
EVAL <script>
執行腳本取得結果並同時儲存在內存,若已存在則忽略不儲存
- 腳本無傳入參數
若無傳入參數,指令後要補 0

- 腳本有帶傳入參數
其中 2 代表前兩個傳入參數將帶入 KEYS,而後續參數則會依序帶入 ARGV

SCRIPT LOAD <script>
將腳本存於內存且不會立即執行,若成功則回傳該腳本的 SHA1 雜湊值,若已存在則忽略不儲存

EVALSHA <hash>
執行內存中已存在的 SHA1 雜湊,並執行對應的腳本

SCRIPT EXISTS <hash1> <hash2> ...
可判斷多個內存腳本是否存在,存在返回 1, 不存在返回 0

SCRIPT FLUSH
清除 server 內存所有腳本

SCRIPT KILL
砍掉 server 當前運行的腳本,若無腳本運行則回 NOTBUSY ... 錯誤訊息
