SsdbClient.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. """
  4. -------------------------------------------------
  5. File Name: SsdbClient.py
  6. Description : 封装SSDB操作
  7. Author : JHao
  8. date: 2016/12/2
  9. -------------------------------------------------
  10. Change Activity:
  11. 2016/12/2:
  12. -------------------------------------------------
  13. """
  14. __author__ = 'JHao'
  15. from ssdb.connection import BlockingConnectionPool
  16. from ssdb import SSDB
  17. import random
  18. import json
  19. class SsdbClient(object):
  20. """
  21. SSDB client
  22. """
  23. def __init__(self, name, host, port):
  24. """
  25. init
  26. :param name:
  27. :param host:
  28. :param port:
  29. :return:
  30. """
  31. self.name = name
  32. self.__conn = SSDB(connection_pool=BlockingConnectionPool(host=host, port=port))
  33. def get(self):
  34. """
  35. get an item
  36. :return:
  37. """
  38. values = self.__conn.hgetall(name=self.name)
  39. return random.choice(values.keys()) if values else None
  40. def put(self, value):
  41. """
  42. put an item
  43. :param value:
  44. :return:
  45. """
  46. value = json.dump(value, ensure_ascii=False).encode('utf-8') if isinstance(value, (dict, list)) else value
  47. return self.__conn.hset(self.name, value, None)
  48. def pop(self):
  49. """
  50. pop an item
  51. :return:
  52. """
  53. key = self.get()
  54. if key:
  55. self.__conn.hdel(self.name, key)
  56. return key
  57. def delete(self, key):
  58. """
  59. delete an item
  60. :param key:
  61. :return:
  62. """
  63. self.__conn.hdel(self.name, key)
  64. def getAll(self):
  65. return self.__conn.hgetall(self.name).keys()
  66. def changeTable(self, name):
  67. self.name = name