DBAtlas · データベース運用アトラス

NOSCRIPT: NOSCRIPT No matching script. Please use EVAL(一致するスクリプトがない)

Redis

意味

EVALSHA で呼び出された Lua スクリプトの SHA1 ダイジェストがサーバーのスクリプトキャッシュに見つからなかった。Redis はこのハッシュに対応するスクリプトを知らない。

原因

サーバーが再起動されたか SCRIPT FLUSH でスクリプトキャッシュがクリアされた、スクリプトが一度もロードされていない、またはフェイルオーバー後の新しいノードでキャッシュが空。

対処方法

スクリプトを EVAL で本体ごと実行する (Redis が自動でキャッシュする) か、先に SCRIPT LOAD でロードし、返された SHA を EVALSHA で使う。アプリケーションでは NOSCRIPT エラーを捕捉し、EVALSHA から EVAL へのフォールバックロジックを実装する。多くの Redis クライアントライブラリはこれを自動で行う。

DBAtlas で開く →

同じデータベースの他の項目