# 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:** ```shell redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...] ``` Ví dụ: ```shell 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](http://www.lua.org/docs.html)). - 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 `KEY` và `ARGV`??? 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 ...\]](https://www.tutorialspoint.com/redis/scripting_eval.htm) | 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 |