redis_util.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/usr/bin/python3
  2. # -*- coding: utf-8 -*-
  3. from redis import StrictRedis
  4. from config import settings
  5. import json
  6. def get_redis():
  7. redis = StrictRedis(host=settings.REDIS_DB_URL['host'], port=settings.REDIS_DB_URL['port'], db=settings.REDIS_DB_URL['db'], password=settings.REDIS_DB_URL['password'])
  8. return redis
  9. def redis_set(name: str, val: str):
  10. redis = get_redis()
  11. redis.set(name, val)
  12. def redis_set_with_time(name: str, val: str, seconds: int):
  13. redis = get_redis()
  14. redis_set(name, val)
  15. redis.expire(name, seconds)
  16. def redis_get(name: str):
  17. redis = get_redis()
  18. val = redis.get(name)
  19. if val is not None:
  20. val = bytes.decode(val)
  21. return val
  22. def redis_lock(name: str, secs: int = 60):
  23. redis = get_redis()
  24. ret = redis.setnx(name, "1")
  25. if ret:
  26. redis.expire(name, secs)
  27. return ret
  28. def redis_unlock(name: str):
  29. val = redis_get(name)
  30. if val is not None and val == "1":
  31. redis = get_redis()
  32. redis.delete(name)
  33. def redis_set_json(name: str, val: dict, secs: int = 3600):
  34. json_str = json.dumps(val, ensure_ascii=False)
  35. redis_set_with_time(name, json_str, secs)
  36. def redis_get_json(name: str):
  37. json_str = redis_get(name)
  38. if json_str is not None:
  39. return json.loads(json_str)