stu_lst = [
{'001': 588},
{'002': 606},
{'003': 620}
]
有一份学生考试成绩单,内容全校几千名学生的考试总成绩,要求你存入redis数据库,请选择合适的数据类型,你的程序支持根据学生的编码查询考试分数。
string 和 hash 都可以存储这些学生的考试成绩,如果用string, 那么需要设置3个key, 如果用hash, 只需要一个key
from redis.client import Redis
r = Redis(host='127.0.0.1', port=6379, db=0, password='密码')
stu_lst = [
{'小明': 588},
{'小刚': 606},
{'小红': 620}
]
for stu in stu_lst:
for name, score in stu.items():
r.set(f"score::{name}", score)
score = r.get('score::小明') # 获取小明的总成绩
score = int(score)
print(score) # 588
# 批量获取学生考试分数
score_lst = r.mget(['score::小明', 'score::小红'])
print(score_lst) # [b'588', b'620']
string 这种数据类型,支持批量操作,因此我一直很喜欢用它来存储数据,比如黑名单信息,当我想判断几十个电话号是否在黑名单中时,我可以使用mget方法,一次性传输数据获得结果。如果用集合,或者是hash,都不能让我一次性判断多个电话号是否在黑名单中。
from redis.client import Redis
r = Redis(host='127.0.0.1', port=6379, db=0, password='密码')
stu_lst = [
{'小明': 588},
{'小刚': 606},
{'小红': 620}
]
for stu in stu_lst:
for name, score in stu.items():
r.hset('stu_score', name, score)
score = r.hget('stu_score', '小刚')
print(int(score)) # 606
QQ交流群: 211426309