import redis
from redis.exceptions import RedisError

default_redis = redis.Redis(
        host='1.94.225.168',
        port=6610,
        db=0,
        socket_connect_timeout=3  # 设置连接超时
    )

def set_coordinate(redis_client, key: str, x: int, y: int) -> bool:
    """
    存储坐标到Redis（保留原始整数格式）
    :param redis_client: Redis客户端实例
    :param key: 存储键名
    :param x: 横坐标（整数）
    :param y: 纵坐标（整数）
    :return: 成功返回True，异常返回None
    """
    try:
        # 将坐标转为"(x,y)"格式字符串存储
        return redis_client.set(key, f"({x}, {y})")
    except (RedisError, TypeError):
        return None

def get_coordinate(redis_client, key: str) -> str:
    """
    从Redis获取坐标（原样返回字符串格式）
    :param redis_client: Redis客户端实例
    :param key: 存储键名
    :return: 成功返回"(x,y)"字符串，异常返回None
    """
    try:
        value = redis_client.get(key)
        return value.decode() if value else None
    except (RedisError, AttributeError):
        return None

def delete_coordinate(redis_client, key: str) -> bool:
    """
    删除Redis中的坐标数据
    :param redis_client: Redis客户端实例
    :param key: 要删除的键名
    :return: 成功返回True，异常返回False
    """
    try:
        deleted = redis_client.delete(key)  # 返回删除的键数量
        return deleted == 1  # 如果成功删除1个键返回True
    except RedisError:
        return False



# 使用示例
if __name__ == "__main__":
    r = default_redis

    # 存储坐标（保留原始格式）
    set_coordinate(r, "location:1", 222, 333)  # 存储为字符串"(222, 333)"

    # 获取坐标（与输入完全一致）
    coord = get_coordinate(r, "location:1")
    print(coord)  # 输出: "(222, 333)"（而非浮点数形式）
    # 测试删除
    if delete_coordinate(r, "location:1"):
        print("坐标删除成功")
    else:
        print("坐标删除失败（键不存在或Redis异常）")
    
    coord = get_coordinate(r, "location:1")
    print(coord)  # 输出: "(222, 333)"（而非浮点数形式）