code: def redis_proc():
      """Download external redis and start the subprocess."""
      REDIS_SERVER_PATH = (
          "core/src/ray/thirdparty/redis/src/redis-server"
      )
      full_path = Path(ray.__file__).parents[0] / REDIS_SERVER_PATH
      check_call_subprocess(["cp", f"{full_path}", "redis-server"])
      proc = subprocess.Popen(["./redis-server", "--port", "7999"])
      yield proc
      subprocess.check_call(["ray", "stop"])
      os.kill(proc.pid, 9)
      subprocess.check_call(["rm", "-rf", "redis-server"])
  
imports: import asyncio
  import os
  import subprocess
  import sys
  from pathlib import Path
  import psutil
  import pytest
  import ray
  import ray._private.ray_constants
  from ray._private.test_utils import Semaphore, check_call_ray, check_call_subprocess, kill_process_by_name, start_redis_instance, run_string_as_driver, run_string_as_driver_nonblocking, wait_for_children_of_pid, wait_for_children_of_pid_to_exit
  from ray._private.utils import detect_fate_sharing_support
label_desc: Use image node_id 8 for calling a global function with example usage: redis_proc() without return types