redis_util.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. from redis import StrictRedis
  4. from config import settings
  5. import json
  6. import time
  7. def get_redis():
  8. redis = StrictRedis(host=settings.REDIS_DB_URL['host'], port=settings.REDIS_DB_URL['port'], username=settings.REDIS_DB_URL['user'], db=settings.REDIS_DB_URL['db'], password=settings.REDIS_DB_URL['password'])
  9. return redis
  10. def redis_set(name: str, val: str):
  11. redis = get_redis()
  12. redis.set(name, val)
  13. def redis_set_with_time(name: str, val: str, seconds: int):
  14. redis = get_redis()
  15. redis_set(name, val)
  16. redis.expire(name, seconds)
  17. def redis_get(name: str):
  18. redis = get_redis()
  19. val = redis.get(name)
  20. if val is not None:
  21. val = bytes.decode(val)
  22. return val
  23. def redis_lock(name: str, secs: int = 60):
  24. redis = get_redis()
  25. ret = redis.setnx(name, "1")
  26. if ret:
  27. redis.expire(name, secs)
  28. time.sleep(1)
  29. return ret
  30. def redis_unlock(name: str):
  31. val = redis_get(name)
  32. if val is not None and val == "1":
  33. redis = get_redis()
  34. redis.delete(name)
  35. def redis_set_json(name: str, val: dict, secs: int = 3600):
  36. json_str = json.dumps(val, ensure_ascii=False)
  37. redis_set_with_time(name, json_str, secs)
  38. def redis_get_json(name: str):
  39. json_str = redis_get(name)
  40. if json_str is not None:
  41. return json.loads(json_str)
  42. if __name__ == '__main__':
  43. try:
  44. # 连接 Redis(指定 username 和 password)
  45. r = StrictRedis(
  46. host='localhost',
  47. port=6379,
  48. username='default', # Redis 6.0+ 支持
  49. password='c0b0Info'
  50. )
  51. # 测试连接
  52. r.ping()
  53. print("✅ 连接成功!")
  54. # 执行一些操作
  55. r.set('test_key', 'hello')
  56. print("test_key:", r.get('test_key').decode('utf-8'))
  57. except Exception as e:
  58. print(f"❌ 连接失败: {e}")