code: def _eval_script(redis, script_id, *keys, **kwargs):
      
      args = kwargs.pop('args', ())
      if kwargs:
          raise TypeError("Unexpected keyword arguments %s" % kwargs.keys())
      try:
          return redis.evalsha(SCRIPTS[script_id], len(keys), *keys + args)
      except NoScriptError:
          logger.info("%s not cached.", SCRIPTS[script_id + 2])
          return redis.eval(SCRIPTS[script_id + 1], len(keys), *keys + args)
docs: Tries to call ``EVALSHA`` with the `hash` and then, if it fails, calls
      regular ``EVAL`` with the `script`.