RedisClient.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. '''
  4. self.name为Redis中的一个key
  5. 2017/4/17 修改pop
  6. '''
  7. import json
  8. import random
  9. import redis
  10. class RedisClient(object):
  11. """
  12. Reids client
  13. """
  14. def __init__(self, name, host, port):
  15. """
  16. init
  17. :param name:
  18. :param host:
  19. :param port:
  20. :return:
  21. """
  22. self.name = name
  23. self.__conn = redis.Redis(host=host, port=port, db=0)
  24. def get(self):
  25. """
  26. get random result
  27. :return:
  28. """
  29. key = self.__conn.hgetall(name=self.name)
  30. return random.choice(key.keys()) if key else None
  31. # return self.__conn.srandmember(name=self.name)
  32. def put(self, key):
  33. """
  34. put an item
  35. :param value:
  36. :return:
  37. """
  38. key = json.dumps(key) if isinstance(key, (dict, list)) else key
  39. return self.__conn.hincrby(self.name, key, 1)
  40. # return self.__conn.sadd(self.name, value)
  41. def getvalue(self, key):
  42. value = self.__conn.hget(self.name, key)
  43. return value if value else None
  44. def pop(self):
  45. """
  46. pop an item
  47. :return:
  48. """
  49. key = self.get()
  50. if key:
  51. self.__conn.hdel(self.name, key)
  52. return key
  53. # return self.__conn.spop(self.name)
  54. def delete(self, key):
  55. """
  56. delete an item
  57. :param key:
  58. :return:
  59. """
  60. self.__conn.hdel(self.name, key)
  61. # self.__conn.srem(self.name, value)
  62. def inckey(self, key, value):
  63. self.__conn.hincrby(self.name, key, value)
  64. def getAll(self):
  65. return self.__conn.hgetall(self.name).keys()
  66. # return self.__conn.smembers(self.name)
  67. def get_status(self):
  68. return self.__conn.hlen(self.name)
  69. # return self.__conn.scard(self.name)
  70. def changeTable(self, name):
  71. self.name = name
  72. if __name__ == '__main__':
  73. redis_con = RedisClient('proxy', 'localhost', 6379)
  74. # redis_con.put('abc')
  75. # redis_con.put('123')
  76. # redis_con.put('123.115.235.221:8800')
  77. # redis_con.put(['123', '115', '235.221:8800'])
  78. # print(redis_con.getAll())
  79. # redis_con.delete('abc')
  80. # print(redis_con.getAll())
  81. # print(redis_con.getAll())
  82. redis_con.changeTable('raw_proxy')
  83. redis_con.pop()
  84. # redis_con.put('132.112.43.221:8888')
  85. # redis_con.changeTable('proxy')
  86. print(redis_con.get_status())
  87. print(redis_con.getAll())