openresty/lua-resty-redis 是章亦春開發的openresty中的操做redis的庫。java
截取官方部分代碼,進行說明mysql
local redis = require "resty.redis"
local red = redis:new()
red:set_timeout(1000) -- 1 sec --設置超時時間
local ok, err = red:connect("127.0.0.1", 6379) --設置redis的host和port
if not ok then --判斷生成鏈接是否失敗
ngx.say("failed to connect: ", err)
return
end
ok, err = red:set("dog", "an animal") --插入鍵值(相似 mysql insert)
if not ok then --判斷操做是否成功
ngx.say("failed to set dog: ", err)
return
end
ngx.say("set result: ", ok) -- 頁面輸出結果
-- put it into the connection pool of size 100,
-- with 10 seconds max idle time
local ok, err = red:set_keepalive(10000, 100) --將鏈接放入鏈接池,100個鏈接,最長10秒的閒置時間
if not ok then --判斷放池結果
ngx.say("failed to set keepalive: ", err)
return
end
-- 若是不放池,用完就關閉的話,用下面的寫法
-- or just close the connection right away:
-- local ok, err = red:close()
-- if not ok then
-- ngx.say("failed to close: ", err)
-- return
-- end複製代碼
若是用過java,c#等面向對象的語言,就會以爲這麼寫太。。。。了,必須重構啊,暴露太多無關細節了,致使代碼中有大量重複代碼了。git
一樣的內容,使用我封裝後的代碼。github
-- 依賴庫
local redis = require "resty.redis-util"
-- 初始化
local red = redis:new();
-- 插入鍵值
local ok,err = red:set("dog","an animal")
-- 判斷結果
if not ok then
ngx.say("failed to set dog:",err)
return
end
-- 頁面打印結果
ngx.say("set result: ", ok) -- 頁面輸出結果複製代碼
詳細使用方法,參見個人項目 anjia0532/lua-resty-redis-utilredis
博客 anjia.ml/2017/08/16/…
掘金 juejin.im/post/5993fe…
簡書 www.jianshu.com/p/54cca5f33…sql