新聞中心
EVAL命令。 
創(chuàng)新互聯(lián)公司專注骨干網(wǎng)絡(luò)服務(wù)器租用十年,服務(wù)更有保障!服務(wù)器租用,雅安服務(wù)器托管 成都服務(wù)器租用,成都服務(wù)器托管,骨干網(wǎng)絡(luò)帶寬,享受低延遲,高速訪問。靈活、實現(xiàn)低成本的共享或公網(wǎng)數(shù)據(jù)中心高速帶寬的專屬高性能服務(wù)器。
第一個Lua腳本命令
Lua 是一種輕量小巧、開源的腳本語言,用標準 C語言編寫。其設(shè)計目的就是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴展和定制功能。它被廣泛的應(yīng)用于:游戲開發(fā)、獨立應(yīng)用腳本、Web 應(yīng)用腳本、擴展和數(shù)據(jù)庫插件等。
Redis 使用
EVAL命令編寫 lua 腳本,其語法格式如下:
127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...]
參數(shù)說明如下:
- script: 該參數(shù)表示使用 Lua 語言編寫的一段腳本程序,該腳本不必定義為 Lua 函數(shù)格式;
- numkeys: 用于指定 key 參數(shù)的數(shù)量;
- key [key ...]: 從 EVAL 命令的第三個參數(shù)算起,表示腳本中用到的所有 key。這些 key 可以使用全局變量 KEYS 數(shù)組來訪問,比如 KEYS[1] 、KEYS[2] 以此類推。
- arg [arg ...]:表示附加參數(shù),在 Lua 語言中通過全局變量 ARGV 數(shù)組訪問,訪問的形式與 KEYS 數(shù)組相同,比如 ARGV[1] 、 ARGV[2]。
舉一個簡單的示例:在 Redis 客戶端使用 Lua 語言編寫“Hello World”并將其輸出。
127.0.0.1:6379> EVAL "return 'Hello world'" 0 "Hello world"
為什么使用Lua腳本
雖然 Redis 官網(wǎng)提供了豐富指令集(200多個),但是在某些特定的領(lǐng)域需要對指令進行擴充,因此 Redis 允許我們使用 Lua 語言以自定義的方式編寫腳本命令,這滿足了一部分用戶的需求。Redis 服務(wù)器會以單線程、原子性的方式執(zhí)行 Lua 腳本,保證 Lua 腳本在處理過程中不會被其他請求中斷。
使用 Lua 腳本有如下好處:
- 減少網(wǎng)絡(luò)開銷:可以將多個請求通過腳本的形式一次發(fā)送,從而減少網(wǎng)絡(luò)時延,比如本來 10 次網(wǎng)絡(luò)請求,我們就可以通過 Lua 腳本一次性完成。
- 原子操作:Redis 會將整個腳本作為一個整體執(zhí)行,中間不會被其他請求干擾。因此在腳本運行過程中無需使用事務(wù)。
- 腳本復用:客戶端發(fā)送的腳本會一直存儲在 Redis 中,這樣其他客戶端只需對這個腳本稍作修改就可以達到復用的目的,極大地提升了編寫腳本的效率。
常用腳本命令
| 命令 | 說明 |
|---|---|
| EVAL script numkeys key [key ...] arg [arg ...] | 使用 Lua 解釋器執(zhí)行腳本。 |
| EVALSHA sha1 numkeys key [key ...] arg [arg ...] | Lua 解釋器根據(jù) sha1 校驗碼執(zhí)行腳本。 |
| SCRIPT EXISTS script [script ...] | 查看指定的腳本是否保存在于緩存當中。 |
| SCRIPT FLUSH | 從腳本緩存中移除所有腳本。 |
| SCRIPT KILL | 殺死當前正在運行的 Lua 腳本。 |
| SCRIPT LOAD script | 將腳本 script 添加到腳本緩存中,但不馬上執(zhí)行這個腳本。 |
基本命令應(yīng)用
EVAL 命令使用示例:
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"
在線練習工具:https://try.redis.io/
查看更多 Redis 命令:https://redis.io/commands
本文名稱:RedisLua腳本
文章鏈接:http://fisionsoft.com.cn/article/djhghii.html


咨詢
建站咨詢
