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)