日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
RedisLua腳本
從 Redis 2.6 版本開始,Redis 使用內(nèi)置的 Lua 解釋器執(zhí)行腳本,這意味著我們可以直接在 Redis 客戶端執(zhí)行Lua 腳本 ,于此同時 Redis 還非常貼心地提供了用于編寫 Lua 腳本的
EVAL命令。

創(chuàng)新互聯(lián)公司專注骨干網(wǎng)絡(luò)服務器租用十年,服務更有保障!服務器租用,雅安服務器托管 成都服務器租用,成都服務器托管,骨干網(wǎng)絡(luò)帶寬,享受低延遲,高速訪問。靈活、實現(xiàn)低成本的共享或公網(wǎng)數(shù)據(jù)中心高速帶寬的專屬高性能服務器。

第一個Lua腳本命令

Lua 是一種輕量小巧、開源的腳本語言,用標準 C語言編寫。其設(shè)計目的就是為了嵌入應用程序中,從而為應用程序提供靈活的擴展和定制功能。它被廣泛的應用于:游戲開發(fā)、獨立應用腳本、Web 應用腳本、擴展和數(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 服務器會以單線程、原子性的方式執(zhí)行 Lua 腳本,保證 Lua 腳本在處理過程中不會被其他請求中斷。

使用 Lua 腳本有如下好處:

  • 減少網(wǎng)絡(luò)開銷:可以將多個請求通過腳本的形式一次發(fā)送,從而減少網(wǎng)絡(luò)時延,比如本來 10 次網(wǎng)絡(luò)請求,我們就可以通過 Lua 腳本一次性完成。
  • 原子操作:Redis 會將整個腳本作為一個整體執(zhí)行,中間不會被其他請求干擾。因此在腳本運行過程中無需使用事務。
  • 腳本復用:客戶端發(fā)送的腳本會一直存儲在 Redis 中,這樣其他客戶端只需對這個腳本稍作修改就可以達到復用的目的,極大地提升了編寫腳本的效率。

常用腳本命令

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í)行這個腳本。

基本命令應用

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腳本
當前網(wǎng)址:http://www.dlmjj.cn/article/djhghii.html