在Python中使用AOP实现Redis缓存示例


Posted in Python onJuly 11, 2017

越来越觉得的缓存是计算机科学里最NB的发明(没有之一),本文就来介绍了一下在Python中使用AOP实现Redis缓存示例,小伙伴们一起来了解一下

import redis 
enable=True 
#enable=False 
def readRedis(key): 
  if enable: 
    r = redis.Redis(host='10.224.38.31', port=8690,db=0, password='xxxx')   
    val = r.get(key) 
    if val is None: 
      print "can not find data for KEY:%s \n" % (key) 
      return None 
    else: 
      print "====Get VALUE from Redis by KEY:%s \n" % ( key) 
      return pickle.loads(val) 
  else: 
    print "disable cache" 
   
def writeRedis(key, val): 
  r = redis.Redis(host='10.224.38.31', port=8690,db=0, password='xxxx') 
  if val is None: 
    print "Val is None, don't save it to redis \n" 
  else: 
    r.set(key, pickle.dumps(val) ) 
    r.expire(key, 60*60*24*7) #1week 
    print "====Write value of KEY:%s to redis \n" % (key) 
   
import pickle, functools 
def cache(f): 
 def wrapper(*args, **kwargs): 
  key = pickle.dumps((f.__name__, args, kwargs)).replace("\n","") 
  val = readRedis(key) 
  if val is None: 
   val = f(*args, **kwargs) # call the wrapped function, save in cache 
   writeRedis(key, val) 
  return val # read value from cache 
 functools.update_wrapper(wrapper, f) # update wrapper's metadata 
 return wrapper  
 
@cache 
def foo(n): 
 return n*2 
 
foo(10) # first call with parameter 10, sleeps 
foo(10) # returns immediately 
foo(15) # returns immediately 
foo(19) # returns immediately

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
分享一个常用的Python模拟登陆类
Mar 29 Python
Python的装饰器模式与面向切面编程详解
Jun 21 Python
Python中操作符重载用法分析
Apr 29 Python
正确理解python中的关键字“with”与上下文管理器
Apr 21 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
将Pytorch模型从CPU转换成GPU的实现方法
Aug 19 Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 Python
Python求解正态分布置信区间教程
Nov 20 Python
python解析命令行参数的三种方法详解
Nov 29 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
Jul 03 Python
Pandas直接读取sql脚本的方法
Jan 21 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Mar 22 Python
浅谈python import引入不同路径下的模块
Jul 11 #Python
python 环境变量和import模块导入方法(详解)
Jul 11 #Python
Python编写登陆接口的方法
Jul 10 #Python
CentOS中升级Python版本的方法详解
Jul 10 #Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
Jul 10 #Python
Python 实现数据库更新脚本的生成方法
Jul 09 #Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 #Python
You might like
实用函数7
2007/11/08 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
用JQUERY增删元素的代码
2012/02/14 Javascript
js/jquery获取文本框输入焦点的方法
2014/03/04 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
基于javascript中的typeof和类型判断(详解)
2017/10/27 Javascript
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
python和shell获取文本内容的方法
2018/06/05 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
Python csv文件记录流程代码解析
2020/07/16 Python
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
医校毕业生自我鉴定
2014/01/25 职场文书
生物制药自我鉴定
2014/01/25 职场文书
水利学院求职自荐书
2014/02/01 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
建设工地安全标语
2014/06/07 职场文书
捐款活动总结
2014/08/27 职场文书
满月酒邀请函
2015/01/30 职场文书
公司财务管理制度
2015/08/04 职场文书
LayUI+Shiro实现动态菜单并记住菜单收展的示例
2021/05/06 Javascript
springboot用户数据修改的详细实现
2022/04/06 Java/Android
Java 写一个简单的图书管理系统
2022/04/26 Java/Android