kevy4.0

EVAL

Lua スクリプトをサーバ側で実行する。numkeys が 1 以上なら KEYS[1] の shard へルーティングされる。

EVAL script numkeys [key [key ...]] [arg [arg ...]]
グループ
スクリプト
追加バージョン
1.0.0
引数の数
3 個以上
フラグ
write

計算量

コンパイルのコストと、スクリプト自身の処理量。スクリプト全体が KEYS[1] の shard 上での 1 つの原子的な単位であり、その間その shard をブロックする。暴走を止めるのは命令数の予算(lua time_limit_ms × 40000 命令)であって、実時間ではない。

計算量と互換性は kevy の実装から読み取ったものであり、Redis のドキュメントを写したものではない。実際に異なるものがいくつかある。

Redis との互換性

差異あり

差異あり。-BUSY 状態も SCRIPT KILL も存在しない —— 予算を超えたスクリプトはその場で中断され、通常のエラーとして返る。EVAL の入れ子は拒否する。redis.call が別の shard の key に触れると CROSSSLOT を返す。EVAL はソースを SHA1 で自動キャッシュするため、SCRIPT LOAD なしで EVALSHA が使える。

関連

EVALSHASCRIPT

← コマンド一覧へ