2016-12-13 6 views
2

Когда я зарегистрировать скрипт Lua для Redis клиента:Использует ли redis-py автоматически использовать evalsha для зарегистрированных скриптов?

script = redis_client.register_script(lua_string) 

, а затем запустить сценарий с клиентом по умолчанию:

script(keys, args) 

делает это автоматически использовать evalsha внутри или это отправить весь сценарий на сервер каждый раз?

ответ

4

Да. Вот соответствующая часть source code:

class StrictRedis(object): 
    def script_load_for_pipeline(self, script): 
     "Make sure scripts are loaded prior to pipeline execution" 
     # we need the sha now so that Script.__call__ can use it to run evalsha. 
     if not script.sha: 
      script.sha = self.immediate_execute_command(
       'SCRIPT', 'LOAD', script.script, **{'parse': 'LOAD'})