Skip to main content

Redis Scripting

Redis scripting được sử dụng để thực thi các script bằng thông dịch Lua (Lua interpreter). Nó được tích hợp vào Redis bắt đầu từ phiên bản 2.6.0. Lệnh được sử dụng cho scripting là lệnh EVAL.

Cú pháp:

redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]

Ví dụ:

redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 
key2 first second  
1) "key1" 
2) "key2" 
3) "first" 
4) "second"

Giải thích:

  • Bên trong quote "" là nội dung của lua script (viết bằng ngôn ngữ LUA, bạn có thể tham khảo về LUA tại đây).
  • Số 2 đằng sau quote là số parameter mô tả Redis key names (ở đây chính là là key1 và key2)
  • Sau key1 và key2 sẽ là các parameter không mô tả key names
  • Các parameter mô tả keynames sẽ được access bên trong LUA script dưới hình thức một phần tử trong array KEY, và các parameter còn lại sẽ được access bên trong LUA script dưới dạng một phần tử trong array ARGV
  • Tại sao lại không dùng chung parameter cho KEYARGV??? Câu trả lời là khi bạn set key cho redis bên trong LUA script thì key đó sẽ chỉ dùng được thông qua KEY parameter

Các command cơ bản của Redis Scripting:

STT Command Mô tả
1 EVAL script numkeys key [key ...] arg [arg ...] Thực thi Lua script
2 EVALSHA sha1 numkeys key [key ...] arg [arg ...] Thực thi Lua script
3 SCRIPT EXISTS script [script ...] Kiểm tra tồn tại của một script trong cache
4 SCRIPT FLUSH Xóa toàn bộ script trong cache
5 SCRIPT KILL Kill việc thực thi một script
6 SCRIPT LOAD script Load một Lua script từ cache