import redis
rdb = redis.Redis(host='localhost',port=6379,db=1)
#模拟数据
data = [
{"name":"张三","age":18},
{"name":"李四","age":20}
]
#redis哈希存储,注意这边必须是以字符串形式存储
for x in data:
hsname = x['name']
rdb.hset('student',hsname ,str(x))
读取数据:
list = rdb.hgetall('student')
for x in list:
temp = rdb.hget('student', x).decode('utf-8')
print(temp)
print(type(temp))
你会发现,输出的格式,双引号全变成单引号了,并且是
类型
{'name':'张三','age':18}
{'name':'李四','age':20}
处理数据: 对象存入redis后,都是字符串的形式,想到的是字符串转json,使用 json.loads()
这个函数,但是使用这个函数,就会出现以下问题:json.decoder.JSONDecodeError: Expecting property name enclosed in double
。问题在于json里只能用双引号,不能用单引号!
通过 eval
就可以转出来:
list = rdb.hgetall('student')
for x in list:
temp = eval(rdb.hget('student', x).decode('utf-8'))
print(type(temp))
你会发现类型为
了