class_docstr: Wraps ray's internal_kv with a namespace to avoid collisions.
  
  Supports string keys and bytes values, caller must handle serialization.
class_docstr_tok: ["Wraps","ray","'s","internal_kv","with","a","namespace","to","avoid","collisions",".","Supports","string","keys","and","bytes","values",",","caller","must","handle","serialization","."]
docstr: Get the value associated with the given key from the store.
  
  Args:
      key (str)
  
  Returns:
      The bytes value. If the key wasn't found, returns None.
docstr_tok: ["Get","the","value","associated","with","the","given","key","from","the","store",".","Args",":","key","(","str",")","Returns",":","The","bytes","value",".","If","the","key","was","n't","found",",","returns","None","."]
code: def get(self, key: str) -> Optional[bytes]:
      """Get the value associated with the given key from the store.
  
      Args:
          key (str)
  
      Returns:
          The bytes value. If the key wasn't found, returns None.
      """
      if not isinstance(key, str):
          raise TypeError(
              "key must be a string, got: {}.".format(type(key))
          )
  
      try:
          return self.gcs_client.internal_kv_get(
              self.get_storage_key(key).encode(),
              namespace=ray_constants.KV_NAMESPACE_SERVE,
              timeout=self.timeout,
          )
      except ray.exceptions.RpcError as e:
          raise KVStoreError(e.rpc_code)
  
file_path: ray/python/ray/serve/_private/storage/kv_store.py
imports: import logging
  from typing import Optional
  import ray
  from ray._private import ray_constants
  from ray._raylet import GcsClient
  from ray.serve._private.constants import RAY_SERVE_KV_TIMEOUT_S, SERVE_LOGGER_NAME
  from ray.serve._private.storage.kv_store_base import KVStoreBase
label_desc: Use image node_id 4 for calling the RayInternalKVStore obj's underlying member method code with example usage: obj.get(key) and returns: self