# 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:**
STTCommandMô tả
1[EVAL script numkeys key \[key ...\] arg \[arg ...\]](https://www.tutorialspoint.com/redis/scripting_eval.htm)Thực thi Lua script
2EVALSHA sha1 numkeys key \[key ...\] arg \[arg ...\]Thực thi Lua script
3SCRIPT EXISTS script \[script ...\]Kiểm tra tồn tại của một script trong cache
4SCRIPT FLUSHXóa toàn bộ script trong cache
5SCRIPT KILLKill việc thực thi một script
6SCRIPT LOAD scriptLoad một Lua script từ cache