nginxの+のLua + Redisの高性能キャッシュデータの読み取り

この記事は取られます。 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からデータを取得することができます。

おすすめ

転載: www.cnblogs.com/123-shen/p/11504195.html