import javaobj
import redis
class RedisUtil:
def __init__(self, host, pwd=None, port=6379, decode_responses=True):
self.pool = redis.ConnectionPool(
host=host,
port=port,
password=pwd,
decode_responses=decode_responses
)
self.r = redis.Redis(connection_pool=self.pool)
# 提供统一的数据获取方法
def get(self, key):
# 判断目标类型,来决定使用哪个获取方法
type = self.r.type(key)
if type == 'sting' or type == b'string':
return self.r.get(key)
elif type == 'hash' or type == b'hash':
return self.r.hgetall(key)
elif type == 'list' or type == b'list':
return self.r.lrange(key, 0, -1)
elif type == 'set' or type == b'set':
return self.r.smembers(key)
elif type == 'zset' or type == b'zset':
return self.r.zrange(key, 0, -1)
else:
raise BaseException(f'{key}得数据类型不支持')
if __name__ == '__main__':
redis_util = RedisUtil(
host='xxxxxx5',
port=6xxxx,
pwd='mxxxxx',
decode_responses=False
)
# res = redis_util.get('{BUY_NOW_ORIGIN_DATA_PREFIX}_59')
# # res是开发把后台源码中的Java对象做了序列化储存后的数据
# # 我们要把它转成python中的对象才好去操作
# # 需要借助 javaobj-py3
# res_object = javaobj.loads(res)
# print(res_object)
# buy_now_object = res_object[0]
# # buy_now_object 这个对象有哪些信息需要去问开发
# # 使用 dir 函数来看buy_now_object 这个对象有哪些属性信息
# print(dir(buy_now_object))
# skuId = buy_now_object.sku_id
# num = buy_now_object.num
res = redis_util.get('{CHECKOUT_PARAM_ID_PREFIX}_59')
print(res)
# 读数据hash就是python里的字典
for key, value in res.items():
key = javaobj.loads(key)
if value == b'':
value = ''
else:
value = javaobj.loads(value)
if key == 'paymentType':
value = value.constant
print(f'{key},{value}')
Redis基础学习
于 2023-12-25 11:30:36 首次发布