前提:
openresty または ngx_lua に関する参考文献:http://openresty.org/en/
问题:
openresty 内のデータを使用する場合、init_by_lua_file では redis に接続できません。以有時候Redis データは再書き込みフェーズまたはアクセスフェーズでのみ読み取ることができます。初期化フェーズでデータを読み取るにはどうすればよいですか?
解決策:
init ステージでシェルコマンドを呼び出す方法を使用します。これは、init ステージでシェルコマンドを実行し、Redis データを読み取り、読み取ったテキストデータを解析するのと同じです。つまり、次のように読み取ることができます。 Redis データを nginx での例:
1 Redis にはハッシュがあり、保存されたデータは次のとおりです:
hmset test_hash f1 v1 f2 v2 f3 v3
2 init_by_lua_file で読み取られたコードは次のとおりです:
local cmd = " redis-cli hgetall test_hash"
local f = io.popen(cmd) local content = f:read("*a")
f:close()
上記コンテンツ内のメモリはRedis内のデータ。
ここでの内容は文字列であり、自分で辞書に再解析する必要があることに注意してください。変数または共有メモリに保存できます。
上記は、init_by_lua_file 段階で openresty が redis を共有メモリに読み込む方法を、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人の参考になれば幸いです。