나는 Redis에서 실행할 작은 Lua 스크립트를 가지고 있으며 실행 시간을 얻는 데 관심이 있습니다.Redis에서 Lua 스크립트의 실행 시간을 결정하는 방법은 무엇입니까?
Redis의 특성과 루아 구현으로 인해 스크립트의 시작/반환 지점에서 TIME 함수를 사용할 수없고 처리를 위해 반환 값에이 정보를 포함 할 수 없습니다 (http://redis.io/commands/eval - 순수 함수로 된 스크립트 참조). 이 오류는 다음과 같이 나타납니다. (error) ERR Error running script (call to f_a49ed2fea72f1f529843d6024d1515e76e69bcbd): Write commands not allowed after non deterministic commands
마지막 실행 스크립트의 실행 시간을 반환하지만 아직 아무것도 찾지 못한 함수/호출을 검색했습니다.
저는 PHP와 Predis 라이브러리를 사용하고 있습니다. PHP 측에서 실행 시간을 확인할 수는 있지만, 전송 오버 헤드를 제거하고 Lua 스크립트가 데이터베이스에 대한 액세스를 얼마나 오래 차단하는지 확인하고 싶습니다. Redis에 저장된 데이터를 변경할 필요가 없다면 시간이 성공적으로 반환되었습니다. 그리고 이것들은 PHP 리포트의 약 1/10에 해당합니다.
PHP를 통하지 않고 Redis에서 Lua 스크립트의 실행 시간을 어떻게 결정합니까?
대부분의 구현에는 실행 시작 이후 경과 한 시간을 반환하는 os.clock()이 있습니다. – Darkwater
스크립트에서'os.clock()'을 호출하려했는데'스크립트가 존재하지 않는 전역 변수 'os'에 액세스하려고 시도했다는 오류가 나타납니다. 이거 사용할 수없는 것 같습니다. 어쨌든 고마워! –
@PeteC OSA 라이브러리가 LUA에 존재하지 않습니다. http://stackoverflow.com/a/31433599/1288120 – Bharat