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的所有廣告信息