DBAtlas · 데이터베이스 운영 아틀라스

NOSCRIPT: NOSCRIPT No matching script. Please use EVAL

Redis

의미

EVALSHA로 호출한 Lua 스크립트의 SHA1 digest를 서버의 스크립트 캐시에서 찾을 수 없다. Redis가 이 해시에 해당하는 스크립트를 알지 못한다.

원인

서버가 재시작되었거나 SCRIPT FLUSH로 스크립트 캐시가 비워짐, 스크립트가 로드된 적 없음, 또는 페일오버 후 새 노드의 캐시가 비어 있음.

해결 방법

EVAL로 스크립트 전체 본문을 실행하거나(Redis가 자동으로 캐시한다), 먼저 SCRIPT LOAD로 로드한 뒤 반환된 SHA를 EVALSHA에 사용한다. 애플리케이션에서 NOSCRIPT 오류를 잡아 EVALSHA에서 EVAL로 fallback하는 로직을 구현한다. 많은 Redis 클라이언트 라이브러리가 이를 자동으로 수행한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목