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)"(而非浮点数形式)