麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > Redis > 正文

Redis執(zhí)行Lua腳本的好處與示例代碼

2020-10-28 21:31:47
字體:
供稿:網(wǎng)友

前言

Redis從2.6版本開始引入對Lua腳本的支持,通過在服務(wù)器中嵌入Lua環(huán)境,Redis客戶端可以使用Lua腳本,直接在服務(wù)端原子的執(zhí)行多個Redis命令。

其中,使用EVAL命令可以直接對輸入的腳本進(jìn)行求值:

redis>EVAL "return 'hello world'" 0"hello world"

使用腳本的好處如下:

1.減少網(wǎng)絡(luò)開銷:本來5次網(wǎng)絡(luò)請求的操作,可以用一個請求完成,原先5次請求的邏輯放在redis服務(wù)器上完成。使用腳本,減少了網(wǎng)絡(luò)往返時延。

2.原子操作:Redis會將整個腳本作為一個整體執(zhí)行,中間不會被其他命令插入。

3.復(fù)用:客戶端發(fā)送的腳本會永久存儲在Redis中,意味著其他客戶端可以復(fù)用這一腳本而不需要使用代碼完成同樣的邏輯。

Redis執(zhí)行Lua腳本

實現(xiàn)一個訪問頻率控制,某個ip在短時間內(nèi)頻繁訪問頁面,需要記錄并檢測出來,就可以通過Lua腳本高效的實現(xiàn)
在redis客戶端機(jī)器上,新建一個文件ratelimiting.lua,內(nèi)容如下

local times = redis.call('incr',KEYS[1])if times == 1 then redis.call('expire',KEYS[1], ARGV[1])endif times > tonumber(ARGV[2]) then return 0endreturn 1

在redis客戶端機(jī)器上,如何測試這個腳本呢?如下:

redis-cli --eval ratelimiting.lua rate.limitingl:127.0.0.1 , 10 3

--eval參數(shù)是告訴redis-cli讀取并運行后面的Lua腳本,ratelimiting.lua是腳本的位置,后面跟著是傳給Lua腳本的參數(shù)。其中","前的rate.limiting:127.0.0.1是要操作的鍵,可以再腳本中用KEYS[1]獲取,","后面的10和3是參數(shù),在腳本中能夠使用ARGV[1]和ARGV[2]獲得。注:","兩邊的空格不能省略,否則會出錯

結(jié)合腳本的內(nèi)容可知這行命令的作用是將訪問頻率限制為每10秒最多3次,所以在終端中不斷的運行此命令會發(fā)現(xiàn)當(dāng)訪問頻率在10秒內(nèi)小于或等于3次時返回1,否則返回0。

測試運行如下:

[root@rhel6 redis-learning]# redis-cli --eval ratelimiting.lua rate.limitingl:127.0.0.1 , 10 3(integer) 1[root@rhel6 redis-learning]# redis-cli --eval ratelimiting.lua rate.limitingl:127.0.0.1 , 10 3(integer) 1[root@rhel6 redis-learning]# redis-cli --eval ratelimiting.lua rate.limitingl:127.0.0.1 , 10 3(integer) 1[root@rhel6 redis-learning]# redis-cli --eval ratelimiting.lua rate.limitingl:127.0.0.1 , 10 3(integer) 0[root@rhel6 redis-learning]# redis-cli --eval ratelimiting.lua rate.limitingl:127.0.0.1 , 10 3(integer) 0

補充:

現(xiàn)在Lua腳本用在很多游戲上,主要是Lua腳本做到可以嵌入到其他程序中運行,游戲升級的時候,可以直接升級腳本,而不用重新安裝游戲。比如游戲的很多關(guān)卡,只需要增加lua腳本,在游戲中嵌入Lua解釋器,游戲團(tuán)隊線上更新Lua腳本,然后游戲自動下載最新的游戲關(guān)卡。例如之前很多的游戲《憤怒的小鳥》就是用Lua語言實現(xiàn)的關(guān)卡。

摘自《Redis入門指南》

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對武林網(wǎng)的支持。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产美女自拍av | 国语自产免费精品视频在 | 久久久久久久久久久久久久久久久久 | 日本欧美中文字幕 | 99精品视频在线导航 | 久久久久久久久久亚洲 | 国产va在线观看 | 天堂在线中文资源 | 青草久久网| 国内精品免费一区二区2001 | 精品一区二区三区免费毛片爱 | 成人三级视频在线观看 | 免费国产网站 | 综合精品视频 | 性看小视频 | 91精品国产91久久久久久丝袜 | 日韩欧美电影一区二区三区 | 99这里精品 | av影院在线播放 | 久国产 | 91精品最新国内在线播放 | 国产精品久久久久久久久久尿 | 久夜草| 国产免费久久久久 | 成人在线观看免费观看 | 美女在线观看视频一区二区 | 欧美视频一区二区三区 | 免费毛片免费看 | 91短视频网页版 | 国产一区二区视频网站 | 精品在线一区二区三区 | 色的综合 | 久久精品99北条麻妃 | 亚洲福利视频52 | av日韩在线免费观看 | 亚洲成人福利网站 | 蜜桃网在线观看 | 精品亚洲夜色av98在线观看 | 最新中文字幕免费视频 | 国产亚洲精品久久久闺蜜 | 曰韩在线视频 |