redis 哈希封装
import redis Pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=11, max_connections=10) # 封装Hash方法 class RedisDB: def __init__(self, key): # key为表名 self.conn = redis.Redis(connection_pool=Pool, decode_responses=True) self.key = key # 添加数据 def set(self, dic): self.conn.hmset(self.key, dic) def get_values(self, *field): data_bytes = self.conn.hmget(self.key, field) if data_bytes != [None]: data = json.loads(data_bytes[0]) if len(data_bytes)==1 else \ [i != None and json.loads(i) or i for i in data_bytes] else: data = {} return data # 获取全部`field` 和 `value def get_all(self): all = self.conn.hgetall(self.key) all_dict = {k: json.loads(v) for k, v in all.items()} return all_dict # 删除 def hdel(self, *field): # 如果只传field ,会有解包错误, 而不执行代码的情况 return self.conn.hdel(self.key, *field) # 查看所有的value def hvals(self): return self.conn.hvals(self.key) # 查看所有的field def hkeys(self): keys = self.conn.hkeys(self.key) keys_list = [i for i in keys] return keys_list # 查看有几个键值对 def hlen(self): keys = self.conn.hlen(self.key) keys_list = [i for i in keys] return keys_list # 判断hash表中指定域是否存在,返回1,若key或field不存在则返回0; def hexists(self, field): return self.conn.hexists(self.key, field)
借鉴封装,返回值bytes修改str类型