redis+mysql+hash组合使用

'''
    用户想要查询个人信息 
    1、到redis缓存中查询个人信息 
    2、redis中查询不到,到mysql查询,并缓存到redis 
    3、再次查询个人信息
'''

import redis
import pymysql

# 用户从终端输入要查询的用户:zhang
username = input('请输入用户名:')

# key       field       value
# username  gender      M
#           age         29

r = redis.Redis(host='127.0.0.1', port=6379, db=0, password='123456')
# 从redis查询(gender age)
# 如果查到,则直接打印
result = r.hgetall(username)
print(result)
if result:
    print('redis数据:', result)
else:
    # 如果没有查到,则从mysql中查询,并将其加入redis缓存,同时设置过期时间5分钟
    db = pymysql.connect('localhost', 'root', '123456', 'userdb', charset='utf8')
    cursor = db.cursor()
    sel = 'select gender,age from user where username=%s'
    cursor.execute(sel,[username])
    res = cursor.fetchall()
    if not res:
        print('Mysql中无此用户')
    else:
        print('Mysql中查询到的结果:',res)
        r.hmset(username,{'gender':res[0][0],'age':res[0][1]})
        r.expire(username,60*5)

 

 

'''
    mysql数据库中数据更新信息后同步到redis缓存
'''

import redis
import pymysql

# 用户从终端输入要查询的用户:yuxiangyang
username = input('请输入用户名:')
age = input('请输入新的年龄:')


r = redis.Redis(host='127.0.0.1', port=6379, db=0)

# 改mysql数据库
db = pymysql.connect('localhost', 'root', '123456', 'userdb', charset='utf8')
cursor = db.cursor()
sel = 'update user set age=%s where username=%s'
cursor.execute(sel,[age,username])
db.commit()
# 同步到redis缓存中
r.hset(username,'age',age)
r.expire(username,60*2)

 

posted @ 2019-07-16 15:29  一如年少模样  阅读(936)  评论(0编辑  收藏  举报