Lua和OpenResty

lua

簡單的來說lua是一種輕量小巧的腳本語言,用標(biāo)準(zhǔn)C語言編寫并以源代碼形式開放,

其設(shè)計(jì)目的是為了嵌入應(yīng)用程序中,從而為應(yīng)用程序提供靈活的擴(kuò)展和定制功能.

lua的安裝

在linux的系統(tǒng)中執(zhí)行下面的命令

curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz

tar zxf lua-5.3.5.tar.gz

cd lua-5.3.5

make linux test

如果安裝時(shí)出了錯(cuò)誤 應(yīng)該是需要安裝lua的相關(guān)依賴庫的支持 執(zhí)行如下命令

yum install libtermcap-devel ncurses-devel libevent-devel readline-devel

然后再執(zhí)行l(wèi)ua是否安裝成功

[root@localhost ~]# lua?

Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio? ?出現(xiàn)這句就表示安裝成功了

lua的基本語法

lua有交互式編程和腳本式編程? 交互式編程就是直接輸入語法 就能執(zhí)行

腳本式編程需要編寫腳本,然后再執(zhí)行命令 執(zhí)行腳本才可以? 一般都采用腳本式編程

OpenResty:

OpenResty是一個(gè)機(jī)遇nginx的可伸縮的web平臺(tái)

OpenResty 相當(dāng)于封裝了nginx,并且集成了lua腳本

安裝OpenResty

在linux安裝OpenResty

1.添加倉庫執(zhí)行命令

yum install yum-utils

yum-config-manager --add-repo?

https://openresty.org/package/centos/openresty.repo

2.執(zhí)行安裝

yum install openresty

3.安裝成功后 會(huì)在默認(rèn)的目錄下

/usr/local/openresty

廣告緩存的載入與讀取

1.lua+nginx? 查詢數(shù)據(jù)放入redis中

利用lua腳本 將mysql中的數(shù)據(jù) 全量 導(dǎo)入到redis中

a.連接mysql ,按照廣告位置position讀取廣告列表,轉(zhuǎn)換為json字符串。

b.連接redis,將廣告列表json字符串存入redis 。

請(qǐng)求需要帶參數(shù)?position --用來指定廣告的位置? 返回值為json

然后寫一個(gè)lua腳本:

修改/usr/local/openresty/nginx/conf/nginx.conf文件: 添加頭信息,和 location信息:

定義lua緩存命名空間,修改nginx.conf: 添加如下代碼即可

lua_shared_dict dis_cache 128m;

2.從redis中獲取數(shù)據(jù)

定義請(qǐng)求,用戶根據(jù)廣告分類的ID? 獲取廣告的列表

通過lua腳本直接從redis中獲取數(shù)據(jù)即可

在 /root/lua目錄下創(chuàng)建 read_ad.lua :

在/usr/local/openresty/nginx/conf/nginx.conf中配置代碼如下:

location /read_ad {

? ? content_by_lua_file /root/lua/read_ad.lua;

}? ?這是查詢緩存中的廣告數(shù)據(jù)

3.加入openresty本地緩存

修改read_ad.lua文件 代碼如下:

測(cè)試地址 :?` http://192.168.200.128/update_ad?position=web_index_lb `

此時(shí)會(huì)將輪播圖位置的所有廣告查詢出來,并且存入到redis緩存中

測(cè)試地址:http://192.168.211.132/read_content?id=1

此時(shí)會(huì)獲取分類ID=1的所有廣告信息

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容