当前位置:   article > 正文

Python模拟Redis与Mysql交互实现一个简单的二级缓存_python redis mysql实战

python redis mysql实战

基本逻辑:

1、先查询Redis是否存在目标数据,存在即输出,不存在则查询Mysql;

2、从mysql取出目标数据存入Redis后设置过期时间,输出目标数据。

 

mysql目标数据结构:

  1. CREATE DATABASE hyy_db;
  2. CREATE TABLE hyy_tab(
  3. id INT NOT NULL AUTO_INCREMENT COMMENT 'id',
  4. NAME VARCHAR(20) COMMENT '名字',
  5. create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  6. PRIMARY KEY (`id`)
  7. )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  8. INSERT INTO hyy_tab(NAME) VALUES ('Tom'),('Jerry');

 

python脚本:

  1. # -*- coding: utf-8 -*-
  2. import pymysql
  3. import redis
  4. import sys
  5. import os
  6. def main():
  7. args = sys.argv
  8. input_name = args[1] #传入值
  9. pool = redis.ConnectionPool(host='192.168.1.100',port=6379,password=123456)
  10. r = redis.Redis(connection_pool=pool)
  11. name = r.lindex(input_name,1)
  12. if name != None: #如果该值存在redis,则输出结果
  13. for i in range(3):
  14. print(r.lindex(input_name,i).decode("utf-8"))
  15. else: #该值不存在redis,从mysql获取,并输出结果
  16. r.expire("list_info",0) #删除临时list
  17. conn=pymysql.connect(host="192.168.1.100",port=3306, user="hyy",passwd="123456",db="hyy_db")
  18. cursor = conn.cursor()
  19. cursor.execute('select * from hyy_tab where name = %s',(input_name))
  20. cur_all = cursor.fetchall() #返回mysql结果集
  21. if cur_all == ():
  22. print('%s does not exist in the target table!' %input_name)
  23. os._exit(0) #如果值不存在于mysql即退出
  24. for cur in cur_all:
  25. for c in cur:
  26. r.rpush("list_info",str(c)) #创建临时list
  27. list_name = r.lindex("list_info",1).decode("utf-8")
  28. for i in range(3):
  29. r.rpush(list_name,r.lindex("list_info",i).decode("utf-8"))
  30. print(r.lindex("list_info",i).decode("utf-8"))
  31. r.expire(input_name,10) #设置过期时间
  32. if __name__ == "__main__":
  33. main()

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/670295
推荐阅读
相关标签
  

闽ICP备14008679号