redis_fun.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import redis
  2. from redis.exceptions import RedisError
  3. default_redis = redis.Redis(
  4. host='1.94.225.168',
  5. port=6610,
  6. db=0,
  7. socket_connect_timeout=3 # 设置连接超时
  8. )
  9. def set_coordinate(redis_client, key: str, x: int, y: int) -> bool:
  10. """
  11. 存储坐标到Redis(保留原始整数格式)
  12. :param redis_client: Redis客户端实例
  13. :param key: 存储键名
  14. :param x: 横坐标(整数)
  15. :param y: 纵坐标(整数)
  16. :return: 成功返回True,异常返回None
  17. """
  18. try:
  19. # 将坐标转为"(x,y)"格式字符串存储
  20. return redis_client.set(key, f"({x}, {y})")
  21. except (RedisError, TypeError):
  22. return None
  23. def get_coordinate(redis_client, key: str) -> str:
  24. """
  25. 从Redis获取坐标(原样返回字符串格式)
  26. :param redis_client: Redis客户端实例
  27. :param key: 存储键名
  28. :return: 成功返回"(x,y)"字符串,异常返回None
  29. """
  30. try:
  31. value = redis_client.get(key)
  32. return value.decode() if value else None
  33. except (RedisError, AttributeError):
  34. return None
  35. def delete_coordinate(redis_client, key: str) -> bool:
  36. """
  37. 删除Redis中的坐标数据
  38. :param redis_client: Redis客户端实例
  39. :param key: 要删除的键名
  40. :return: 成功返回True,异常返回False
  41. """
  42. try:
  43. deleted = redis_client.delete(key) # 返回删除的键数量
  44. return deleted == 1 # 如果成功删除1个键返回True
  45. except RedisError:
  46. return False
  47. # 使用示例
  48. if __name__ == "__main__":
  49. r = default_redis
  50. # 存储坐标(保留原始格式)
  51. set_coordinate(r, "location:1", 222, 333) # 存储为字符串"(222, 333)"
  52. # 获取坐标(与输入完全一致)
  53. coord = get_coordinate(r, "location:1")
  54. print(coord) # 输出: "(222, 333)"(而非浮点数形式)
  55. # 测试删除
  56. if delete_coordinate(r, "location:1"):
  57. print("坐标删除成功")
  58. else:
  59. print("坐标删除失败(键不存在或Redis异常)")
  60. coord = get_coordinate(r, "location:1")
  61. print(coord) # 输出: "(222, 333)"(而非浮点数形式)