首页 前端知识 mysql与redis结合使用

mysql与redis结合使用

2024-08-27 21:08:33 前端知识 前端哥 75 740 我要收藏

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

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

import pymysql

import redis





class MySqlHelper:

    def __init__(self):

       self.con = None

       self.cur = None

       try:

          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 row

       except 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 = None

       try:

          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 value

       else:

          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 user





def main():

    dh = DataHelper()

    r = dh.query_user("3031")

    print(r)

    # dh.regist_user("zzy1", "123")





if __name__ == '__main__':

    main()

转载请注明出处或者链接地址:https://www.qianduange.cn//article/17131.html
标签
redis
评论
发布的文章

npm install 报错解决记录

2024-09-09 00:09:08

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!