def execute_command(command: Command, cache: Cache) -> Union[str, bytes]: args = command.args result: Union[str, bytes] = _NOT_EXECUTED if isinstance(command, CommandSet): if cache.set_item(args[0], command.get_bytes_attachment(), int(args[1])): result = _SUCCESS else: result = _FAILURE elif isinstance(command, CommandGet): item = cache.get_item(args[0]) if item is None: result = _NOT_FOUND else: result = str(len(item)).encode() + SEPARATOR_BINARY + item elif isinstance(command, CommandDelete): if cache.delete_item(args[0]): result = _SUCCESS else: result = _FAILURE if isinstance(result, str): result += SEPARATOR else: result += SEPARATOR_BINARY return result