最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年10月15日 09:50:47   作者:yanghuahui  
Redis在2.6推出了腳本功能,允許開發(fā)者使用Lua語言編寫腳本傳到Redis中執(zhí)行。下面這篇文章主要給大家介紹了關于Redis執(zhí)行Lua腳本的好處與示例代碼,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下

前言

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

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

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

使用腳本的好處如下:

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

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

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

Redis執(zhí)行Lua腳本

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

local times = redis.call('incr',KEYS[1])

if times == 1 then
 redis.call('expire',KEYS[1], ARGV[1])
end

if times > tonumber(ARGV[2]) then
 return 0
end
return 1

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

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]獲得。注:","兩邊的空格不能省略,否則會出錯

結合腳本的內容可知這行命令的作用是將訪問頻率限制為每10秒最多3次,所以在終端中不斷的運行此命令會發(fā)現(xiàn)當訪問頻率在10秒內小于或等于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腳本做到可以嵌入到其他程序中運行,游戲升級的時候,可以直接升級腳本,而不用重新安裝游戲。比如游戲的很多關卡,只需要增加lua腳本,在游戲中嵌入Lua解釋器,游戲團隊線上更新Lua腳本,然后游戲自動下載最新的游戲關卡。例如之前很多的游戲《憤怒的小鳥》就是用Lua語言實現(xiàn)的關卡。

摘自《Redis入門指南》

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關文章

  • redis分布式鎖解決緩存雙寫一致性

    redis分布式鎖解決緩存雙寫一致性

    這篇文章主要為大家介紹了redis分布式鎖解決緩存雙寫一致性示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 淺談redis的過期時間設置和過期刪除機制

    淺談redis的過期時間設置和過期刪除機制

    本文主要介紹了redis的過期時間設置和過期刪除機制,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Redis分布式鎖及安全問題解決

    Redis分布式鎖及安全問題解決

    在分布式環(huán)境中,遇到搶購等訪問共享資源的場景時,需要我們有一種鎖機制去解決并發(fā)問題,本文主要介紹了Redis分布式鎖及安全問題解決,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • redis 實現(xiàn)登陸次數(shù)限制的思路詳解

    redis 實現(xiàn)登陸次數(shù)限制的思路詳解

    這篇文章主要介紹了redis 實現(xiàn)登陸次數(shù)限制的思路詳解,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 阿里Tair分布式鎖與Redis分布式鎖的實現(xiàn)區(qū)別

    阿里Tair分布式鎖與Redis分布式鎖的實現(xiàn)區(qū)別

    本文給大家介紹阿里Tair分布式鎖與Redis分布式鎖的實現(xiàn)區(qū)別解析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2026-04-04
  • Redis實現(xiàn)短信登錄的示例代碼

    Redis實現(xiàn)短信登錄的示例代碼

    本文主要介紹了Redis實現(xiàn)短信登錄的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • redis實現(xiàn)分布式的方法總結

    redis實現(xiàn)分布式的方法總結

    在本篇文章中小編給大家整理了關于redis分布式怎么做的具體內容以及知識點總結,有興趣的朋友們參考下。
    2019-06-06
  • 淺談Redis常見延遲問題定位與分析

    淺談Redis常見延遲問題定位與分析

    大部分時候,redis延遲很低,但是在某些時刻,有些redis實例會出現(xiàn)很高的響應延時,本文主要介紹了淺談Redis常見延遲問題定位與分析,具有一定的參考價值,感興趣的可以了解一下
    2022-06-06
  • Redis常用的數(shù)據(jù)結構及實際應用場景

    Redis常用的數(shù)據(jù)結構及實際應用場景

    本文介紹了Redis中常用的數(shù)據(jù)結構,包括字符串、列表、集合、哈希表、有序集合和Bitmap,并詳細說明了它們在各種場景下的使用,需要的朋友可以參考下
    2024-05-05
  • 利用Redis實現(xiàn)訂單30分鐘自動取消

    利用Redis實現(xiàn)訂單30分鐘自動取消

    本文主要介紹了利用Redis實現(xiàn)訂單30分鐘自動取消,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06

最新評論

遂平县| SHOW| 齐河县| 贵溪市| 静安区| 平潭县| 镇雄县| 青田县| 伊川县| 罗甸县| 古蔺县| 新邵县| 水城县| 伊川县| 山西省| 临澧县| 永泰县| 房产| 尼玛县| 泰州市| 邢台县| 梁平县| 宽甸| 白水县| 英山县| 府谷县| 太白县| 华安县| 龙陵县| 时尚| 北京市| 邹城市| 河间市| 马龙县| 中卫市| 建湖县| 梁河县| 缙云县| 新昌县| 潜江市| 寿光市|