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