openresty前端開發入門四之Redis篇
這章主要演示怎麼通過lua連線redis,並根據使用者輸入的key從redis獲取value,並返回給使用者
操作redis主要用到了lua-resty-redis庫,程式碼可以在github上找得到
而且上面也有例項程式碼
由於官網給出的例子比較基本,程式碼也比較多,所以我這裡主要介紹一些怎麼封裝一下,簡化我們呼叫的程式碼
lua/redis.lua
local redis = require "resty.redis"
local config = {
host = "127.0.0.1",
port = 6379,
-- pass = "1234" -- redis 密碼,沒有密碼的話,把這行註釋掉
}
local _M = {}
function _M.new(self)
local red = redis:new()
red:set_timeout(1000) -- 1 second
local res = red:connect(config[`host`], config[`port`])
if not res then
return nil
end
if config[`pass`] ~= nil then
res = red:auth(config[`pass`])
if not res then
return nil
end
end
red.close = close
return red
end
function close(self)
local sock = self.sock
if not sock then
return nil, "not initialized"
end
if self.subscribed then
return nil, "subscribed state"
end
return sock:setkeepalive(10000, 50)
end
return _M
其實就是簡單把連線,跟關閉做一個簡單的封裝,隱藏繁瑣的初始化已經連線池細節,只需要呼叫new,就自動就連結了redis,close自動使用連線池
lua/hello.lua
local cjson = require "cjson"
local redis = require "redis"
local req = require "req"
local args = req.getArgs()
local key = args[`key`]
if key == nil or key == "" then
key = "foo"
end
-- 下面的程式碼跟官方給的基本類似,只是簡化了初始化程式碼,已經關閉的細節,我記得網上看到過一個 是修改官網的程式碼實現,我不太喜歡修改庫的原始碼,除非萬不得已,所以儘量簡單的實現
local red = redis:new()
local value = red:get(key)
red:close()
local data = {
ret = 200,
data = value
}
ngx.say(cjson.encode(data))
訪問
http://localhost/lua/hello?key=hello
即可獲取redis中的key為hello的值,如果沒有key引數,則預設獲取foo的值
ok,到這裡我們已經可以獲取使用者輸入的值,並且從redis中獲取資料,然後返回json資料了,已經可以開發一些簡單的介面了
示例程式碼 參見demo4部分
相關文章
- openresty前端開發入門五之Mysql篇REST前端MySql
- openresty前端開發入門三之JSON篇REST前端JSON
- openresty前端開發入門二REST前端
- openresty前端開發序REST前端
- 前端入門篇之div前端
- Web 前端開發之小白入門Web前端
- OpenResty入門REST
- openresty前端開發進階二之https後端REST前端HTTP後端
- 前端開發快速入門前端
- openresty前端開發輕量級MVC框架封裝一(控制器篇)REST前端MVC框架封裝
- 學習筆記 AS入門(四) 元件篇之Activity筆記元件
- web前端開發怎麼入門?Web前端
- webpack4.0 入門篇 - 構建前端開發的基本環境Web前端
- 【Android開發入門教程】四.使用者介面之LayoutAndroid
- Web前端開發入門之網頁製作三要素Web前端網頁
- Web前端開發入門之網頁製作三要素!Web前端網頁
- redis入門指南(四)—— redis如何節省空間Redis
- Python:介面開發,wx入門篇Python
- 《xhtml入門系列》之四HTML
- 遊戲開發新手入門之DirectX入門(轉)遊戲開發
- Go-Spring 入門篇(四)GoSpring
- Laravel 入門篇之開發環境 Homestead 的安裝配置Laravel開發環境
- Redis從入門到精通:初級篇Redis
- Redis從入門到精通:中級篇Redis
- Redis 7.x 入門和開發實戰Redis
- 店鋪營業狀態開發+redis入門Redis
- jQ基礎篇–外掛開發入門
- 前端基礎入門四(JavaScript基礎)前端JavaScript
- web_前端開發JS框架篇-Vue基礎入門版-基礎語法Web前端JS框架Vue
- go併發之goroutine和channel,併發控制入門篇Go
- (Redis):Redis入門Redis
- Android開發入門之熟悉開發環境Android開發環境
- VR開發教程:Unity開發VR眼鏡中文入門教程四VRUnity
- Python和前端開發哪個更好入門?Python前端
- 入門級前端開發可能需要的安利列表前端
- web前端開發教程,最全JavaScript入門講解Web前端JavaScript
- Web開發初探之JavaScript 快速入門WebJavaScript
- Redis入門第十篇【持久化】Redis持久化