当前位置: 首页 > news >正文

mysql与redis结合使用

 综合利用redis内存数据库和mysql关系型数据库特点,提升系统性能

核心思想:先从redis读,redis没有在从mysql读,读到后放入redis,写的时间同时写入redis与mysql,前台写入redis, 在后台写入mysql

import pymysqlimport redisclass MySqlHelper:def __init__(self):self.con = Noneself.cur = Nonetry:self.con = pymysql.connect(user="root", password="123456", database="python2407")except Exception as e:print(f"连接出异常")else:self.cur = self.con.cursor()def query_one(self, sql, args=None):try:self.cur.execute(sql, args)return self.cur.fetchone()except Exception as e:print(f"查询出异常")def update(self, sql, args=None):try:row = self.cur.execute(sql, args)self.con.commit()return rowexcept Exception as e:print(f"修改出异常")def __del__(self):if self.cur:self.cur.close()if self.con:self.con.close()class RedisHelper:def __init__(self):self.client = Nonetry:self.client = redis.Redis(host="192.168.13.32", password="123456")except Exception as e:print(f"连接redis失败")def query_one(self, key):try:return self.client.hgetall(key)except Exception as e:print(f"执行查询失败")def update(self, key, value):try:self.client.hset(key, mapping=value)except Exception as e:print(f"执行修改失败", e)def __del__(self):if self.client:self.client.close()class DataHelper:def __init__(self):self.sql = MySqlHelper()self.redis = RedisHelper()def regist_user(self, username, password):row = self.sql.update("insert into user (username, password) values (%s, %s)", (username, password))if row > 0:user = self.sql.query_one("select * from user where username = %s and password = %s", (username, password))self.redis.update(f"{user[0]}", {"id": user[0], "username": user[1], "password": user[2]})print(f"注册成功")def query_user(self, u_id):value = self.redis.query_one(u_id)if value:print(f"redis中直接找到")return valueelse:user = self.sql.query_one("select * from user where id = %s", u_id)if user:print(f"redis中没有找到, 从mysql中找到放入redis")self.redis.update(f"{u_id}", {"id": user[0], "username": user[1], "password": user[2]})return userdef main():dh = DataHelper()r = dh.query_user("3031")print(r)# dh.regist_user("zzy1", "123")if __name__ == '__main__':main()


http://www.mrgr.cn/news/6795.html

相关文章:

  • C#实现数据采集系统-数据反写(3)ModbusTcp写入数据模块开发
  • C++基础面试题 | C和C++的区别?
  • 企业数字化转型会面临哪些挑战,如何解决?
  • 【软件造价咨询】信息化项目造价之服务器如何做选型配置论证分析
  • YOLOv9改进策略【注意力机制篇】| 引入SimAM注意力模块(一个简单的,无参数的卷积神经网络注意模块)
  • 婚恋交友系统该如何制作成品系统?
  • 【计算机组成原理】2.2.1_4 算数逻辑单元ALU
  • 关于前端form提交后端返回文件流触发浏览器下载(并发控制)
  • 北京,为什么会成为一个绿灯过人行道还要小心被车撞的城市?
  • UPROPERTY(meta = (BindWidget))的含义
  • C# 调用接口处理返回json数据
  • 设计模式六大原则(一)--单一职责原则
  • UE5-C++入门教程(二)---编写Editor类别的自定义模型实现小球规划路线的可视化
  • (七)Flink Watermark
  • JVM系列--运行时数据区
  • 如何将sqlite3中数据导入到mysql中
  • QT 目录
  • LabVIEW中CANopen Read SDO.vi 和 CANopen Read Write CAN Frame.vi区别
  • 2. Java 中的 List 接口有哪些实现类?
  • 文献阅读:单细胞分辨率下小鼠大脑衰老的分子和空间特征