日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間: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ù)器租用十年,服務(wù)更有保障!服務(wù)器租用,雅安服務(wù)器托管 成都服務(wù)器租用,成都服務(wù)器托管,骨干網(wǎng)絡(luò)帶寬,享受低延遲,高速訪問。靈活、實(shí)現(xiàn)低成本的共享或公網(wǎng)數(shù)據(jù)中心高速帶寬的專屬高性能服務(wù)器。

第一個Lua腳本命令

Lua 是一種輕量小巧、開源的腳本語言,用標(biāo)準(zhǔn) C語言編寫。其設(shè)計目的就是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能。它被廣泛的應(yīng)用于:游戲開發(fā)、獨(dú)立應(yīng)用腳本、Web 應(yīng)用腳本、擴(kuò)展和數(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)域需要對指令進(jìn)行擴(kuò)充,因此 Redis 允許我們使用 Lua 語言以自定義的方式編寫腳本命令,這滿足了一部分用戶的需求。Redis 服務(wù)器會以單線程、原子性的方式執(zhí)行 Lua 腳本,保證 Lua 腳本在處理過程中不會被其他請求中斷。

使用 Lua 腳本有如下好處:

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

常用腳本命令

Redis腳本命令
命令 說明
EVAL script numkeys key [key ...] arg [arg ...] 使用 Lua 解釋器執(zhí)行腳本。
EVALSHA sha1 numkeys key [key ...] arg [arg ...] Lua 解釋器根據(jù) sha1 校驗(yàn)碼執(zhí)行腳本。
SCRIPT EXISTS script [script ...] 查看指定的腳本是否保存在于緩存當(dāng)中。
SCRIPT FLUSH 從腳本緩存中移除所有腳本。
SCRIPT KILL 殺死當(dāng)前正在運(yùn)行的 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"  

在線練習(xí)工具:https://try.redis.io/

查看更多 Redis 命令:https://redis.io/commands


當(dāng)前名稱:RedisLua腳本
當(dāng)前鏈接:http://www.5511xx.com/article/djhghii.html