この記事は取られます。 https://segmentfault.com/p/1210000011625271/read
Luaは使用されない前に、我々は、効率を向上させることが明らかで、LUAを使用した後のRedisパス経路探索および比較データからデータを取得します。
インストールOpenResty
参考yumを与えられた公式の実装工程は、さまざまなサポートシステムが持っている、また、元のインストールの形をとる、インストールが完了し、デフォルトのパスでは、/ usr / local / openresty、OpenRestyのRedisが来る操作モジュールの新バージョンであるので、我々は必要あなた自身を再インストールします。
nginxの設定
増加は、HTTPモジュールの下に、次の
lua_package_path "/usr/local/openresty/lualib/?.lua ;;"。#lua模块
lua_package_cpath "/usr/local/openresty/lualib/?.so ;;"。#C模块
Luaは、より良い設定、次のようにlua.conの設定ファイルと一緒にかき混ぜnginx.confていない独立したlua.confドキュメントに対して構成しました:
#lua.confの
サーバーは、{
80を聞きます。
サーバーの名前 _;
}
nginx.confファイル内のHTTPモジュールが導入されます
lua.confと、
簡単なテスト
シンプルなのluaスクリプトファイルtest.luaを書く、ストレージディレクトリは以下のconf / LUAです
ngx.say( "ハローLUAの世界");
lua.confを変更
位置/ LUA {
default_type 'text / htmlの';オフlua_code_cache;
content_by_lua_fileのconf /連絡先/ test.lua。
}
テスト構成が正しいです
./nginx -t#設定ファイルを検出し、正しいですが、それは、ログには、次の成功が表示されることを意味し
nginx: [alert] lua_code_cache is off; this will hurt performance in/usr/local/nginx/conf/lua.conf:7
nginx: [alert] lua_code_cache is off; this will hurt performance in/usr/local/nginx/conf/lua.conf:13
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
ブラウザでhttp://192.168.1.105/luaを入力し、ページ通常の出力は「hello Luaの世界」
JSONサポート
スクリプトはhttp://lua-users.org/wiki/JsonModules対処します
通常は問題がない文字列型の値を取得し、我々は、キー値のJSON形式が正しく機能するためにJSONのサポートを必要とし得ます。LUAスクリプトで参照するためには/ usr / local / openresty / lualibディレクトリの下に置くためのスクリプトをダウンロード
データ収集のRedis
Redisの接続テストスクリプトが書かれた、とのRedisから指定されたキーの値を取得します。次のようにスクリプトを読み取ります。
=は( "resty.redis")を必要とするローカルRedisのは、
ローカルJSON =( "dkjson")を必要とします-创建实例
ローカルredis_instance = Redisの新しい()
-设置超时(毫秒)
redis_instance:SET_TIMEOUT(3000)
-建立连接
ローカルホスト= "127.0.0.1"
ローカルポート= 6679
ローカルOK、ERR = redis_instanceは:接続(ホスト、ポート)
OKでない場合は、
ngx.say( "Redisのエラーに接続します"、ERR)
リターンclose_redis(redis_instance)が
終了
ローカルRESPを誤る= redis_instance:evalの(「KEYS '取得'(redis.callを返す[1 ])」、1、 "アリババ")。
ngx.say( "Redisのデータ="、RESP)。ngx.say( "Redisのデータ="、RESP)。ngx.say( "JSONデータ="、json.encode(RESP))
- 通常の状況ではクローズせずにRedisの、単純なテストケースを閉じているはず
以下のように設定lua.conf、
位置/ lua_redis_test {
default_type 'text / htmlの';
オフlua_code_cache;
content_by_lua_file /usr/local/nginx/conf/lua/json_test.lua;
}
本明細書中で使用されるのRedisのAlibabaの結合に書き込まれた値は、簡単なjedisを書くことができます
JedisのRedis =新Jedis( "192.168.1.105"、6679);
JSONObjectオブジェクト=新しいJSONObject()。
object.put( "AAAA"、123)。
object.put( "BBBBB"、23234);
redis.set( "アリババ"、Object.ToStringを());
テスト構成が正しいことをした後、nginxのを再起動してください。ブラウザの入力http://192.168.1.105/lua_redis_test、alibabaのキー値は、出力をRedisの必要があります。
Redisのデータ= { "AAAA":123、 "BBBBB":23234} JSONデータ= "{" AAAA ":123、" BBBBB」:23234}
nginxのに基づいて、この時点で、あなたは単に大幅にレスポンスを要求したデータの効率を向上させること、LUAスクリプトでのRedisからデータを取得することができます。