Openrestyフロントエンド開発入門四のRedis編
この章では,luaを介してredisに接続し,ユーザが入力したkeyに基づいてredisからvalueを取得し,ユーザに返す方法を主に示す.
操作redisは主にlua-resty-redisライブラリに使用され、コードはgithubで見つけることができます.
インスタンスコードも上にあります
公式サイトの例は比較的に基本的で、コードも比較的に多いので、私はここで主にいくつかのどのようにカプセル化して、私たちが呼び出したコードを簡略化するかを紹介します.
lua/redis.lua
実は简単に接続を闭じて、简単なパッケージを作って、面倒な初期化を隠してすでに接続プールの详细を初期化して、newを呼び出すだけで、自動的にredisをリンクして、closeは自动的に接続プールを使います
lua/hello.lua
アクセスhttp://localhost/lua/hello?ke...
redisのkeyがhelloの値を取得し、keyパラメータがない場合はfooの値をデフォルトで取得します.
OK、ここではユーザーが入力した値を取得し、redisからデータを取得し、jsonデータを返すことができます.簡単なインタフェースを開発することができます.
サンプルコードはdemo 4セクションを参照
操作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?ke...
redisのkeyがhelloの値を取得し、keyパラメータがない場合はfooの値をデフォルトで取得します.
OK、ここではユーザーが入力した値を取得し、redisからデータを取得し、jsonデータを返すことができます.簡単なインタフェースを開発することができます.
サンプルコードはdemo 4セクションを参照