一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Redis - Redis執(zhí)行Lua腳本的好處與示例代碼

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

2019-11-19 18:11yanghuahui Redis

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

前言

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

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

?
1
2
redis>EVAL "return 'hello world'" 0
"hello world"

使用腳本的好處如下:

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

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

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

Redis執(zhí)行Lua腳本

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

?
1
2
3
4
5
6
7
8
9
10
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客戶端機器上,如何測試這個腳本呢?如下:

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

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

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

測試運行如下:

?
1
2
3
4
5
6
7
8
9
10
[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

補充:

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

摘自《Redis入門指南》

總結

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

原文鏈接:https://www.cnblogs.com/yanghuahui/p/3697996.html

延伸 · 閱讀

精彩推薦
  • RedisRedis全量復制與部分復制示例詳解

    Redis全量復制與部分復制示例詳解

    這篇文章主要給大家介紹了關于Redis全量復制與部分復制的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Redis爬蟲具有一定的參考學習...

    豆子先生5052019-11-27
  • Redis詳解Redis復制原理

    詳解Redis復制原理

    與大多數db一樣,Redis也提供了復制機制,以滿足故障恢復和負載均衡等需求。復制也是Redis高可用的基礎,哨兵和集群都是建立在復制基礎上實現高可用的...

    李留廣10222021-08-09
  • Redisredis實現排行榜功能

    redis實現排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來實現排行榜功能,本文就來簡單的介紹一下如何使用,具有一定的參考價值,感興趣的小伙伴們...

    乘月歸5022021-08-05
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    xiaojin21cen10152021-07-27
  • RedisRedis 事務知識點相關總結

    Redis 事務知識點相關總結

    這篇文章主要介紹了Redis 事務相關總結,幫助大家更好的理解和學習使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    這篇文章主要給大家介紹了關于redis中如何使用lua腳本讓你的靈活性提高5個逼格的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具...

    一線碼農5812019-11-18
  • RedisRedis的配置、啟動、操作和關閉方法

    Redis的配置、啟動、操作和關閉方法

    今天小編就為大家分享一篇Redis的配置、啟動、操作和關閉方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    大道化簡5312019-11-14
  • RedisRedis如何實現數據庫讀寫分離詳解

    Redis如何實現數據庫讀寫分離詳解

    Redis的主從架構,能幫助我們實現讀多,寫少的情況,下面這篇文章主要給大家介紹了關于Redis如何實現數據庫讀寫分離的相關資料,文中通過示例代碼介紹...

    羅兵漂流記6092019-11-11
主站蜘蛛池模板: 91无套极品外围在线播放 | 欧美亚洲桃花综合 | 久久中文字幕综合不卡一二区 | 青青青手机在线观看 | 国产卡一卡二卡三卡四 | 成人性爱视频在线观看 | 午夜大片在线观看 | 2012中文字幕中字视频 | 日韩成人在线免费视频 | 深夜免费在线观看 | 日本孕妇大胆孕交 | 1717she精品视频在线观看 | 男人和女人全黄一级毛片 | 日韩永久在线观看免费视频 | 91精品国产亚一区二区三区 | 99精品在线视频 | 欧美一卡2卡3卡无卡 | 嫩草视频在线观看视频播放 | 好男人好资源在线观看免费 | 16男男gaygays | 人禽l交视频在线播放 视频 | 成人男女网免费 | 国产亚洲高清国产拍精品 | 国产精品精品 | 亚洲激情偷拍 | 东京道一本热大交乱 | 国产福利片在线 易阳 | 久久国产精品二区99 | japanesexxxx在线播放 | 91香蕉影院 | 国语视频高清在线观看 | 91网红福利精品区一区二 | 四虎影视地址 | 欧美同性猛男野外gay免费 | 福利视频一区二区三区 | 四虎影视永久在线观看 | 久久久免费观成人影院 | 免费视频亚洲 | 男人的天堂在线观看免费 | 久久久久久久久女黄 | 国产99久久久国产精品成人 |