LUAスクリプトを実行するためのphpredisサンプルコード
2022-01-06 07:21:21
プリアンブル
この記事では、LUAスクリプトのphpredis実行について紹介します。参考と勉強のために共有してください。
コード例
$lua = <<<EOT
local kws = {}
local lrkws = {}
local nkws = {}
local kw_ids = {}
local lr_ids = {}
local n_ids = {}
for kw in string.gmatch(KEYS[1], "[^|]+") do
table.insert(kws, "kw:". .kws)
end
for kw in string.gmatch(KEYS[2], "[^|]+") do
table.insert(lrkws, "lrkw:". .kw)
end
for kw in string.gmatch(KEYS[3], "[^|]+") do
table.insert(nkws, "nkw:". .kw)
end
if #kws > 0 then
kw_ids = redis.call('sinter', unpack(kws))
end
if #lrkws > 0 then
lr_ids = redis.call('sinter', unpack(lrkws))
end
if #nkws > 0 then
n_ids = redis.call('sinter', unpack(nkws))
end
local cache_key = ARGV[1]
for _, v in ipairs(kw_ids) do
redis.call('sadd', cache_key, v)
end
for _, v in ipairs(lr_ids) do
redis.call('sadd', cache_key, v)
end
for _, v in ipairs(n_ids) do
redis.call('sadd', cache_key, v)
end
redis.call('expire', cache_key, 600)
return redis.call('scard', cache_key)
EOT;
$ret = $redis->eval($lua, array("hello|thank you", "", "hello", "cache_key"), 3);
echo $ret;
この例では、3つのKEYSパラメータと1つのARGVパラメータを渡しています。KEYSパラメータは文字列で、単語と単語の間は|で区切られています。
最後にluaスクリプトは、ARGVパラメータで指定されたキーにクエリ結果を格納し、結果のセットのメンバー数を返します。
ここで重要なのは eval関数の第3引数はKEYSの数です。phpredisはこの値を元にKEYSとARGVを区別しています。
参考ページ:https://github.com/phpredis/phpredis/blob/develop/tests/RedisTest.php
概要
上記は、この記事のすべての内容であり、私はあなたの勉強や仕事のためのこの記事の内容は、特定の参照学習価値を持って願って、あなたが交換するメッセージを残すことができる質問がある場合は、スクリプトハウスのあなたのサポートをありがとうございました。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン