在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实现根据ip地址反向查找主机名称的方法
Apr 29 Python
Python numpy 提取矩阵的某一行或某一列的实例
Apr 03 Python
pycharm使用matplotlib.pyplot不显示图形的解决方法
Oct 28 Python
python将txt文件读入为np.array的方法
Oct 30 Python
Python面向对象之类和对象实例详解
Dec 10 Python
Python参数传递实现过程及原理详解
May 14 Python
Python简单实现词云图代码及步骤解析
Jun 04 Python
Python代码执行时间测量模块timeit用法解析
Jul 01 Python
详解python变量与数据类型
Aug 25 Python
Python通过len函数返回对象长度
Oct 22 Python
pycharm永久激活超详细教程
Oct 29 Python
如何利用Python matplotlib绘制雷达图
Dec 21 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
基于PHP+MySQL的聊天室设计
2006/10/09 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
jQuery 图片切换插件(代码比较少)
2012/05/07 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
2014/01/26 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
python使用webbrowser浏览指定url的方法
2015/04/04 Python
Python返回真假值(True or False)小技巧
2015/04/10 Python
对Python中的@classmethod用法详解
2018/04/21 Python
对python while循环和双重循环的实例详解
2019/08/23 Python
django中的图片验证码功能
2019/09/18 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
澳大利亚购买健身器材网站:Gym Direct
2019/12/19 全球购物
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
物流专业求职计划书
2014/01/10 职场文书
音乐教学反思
2014/02/02 职场文书
租房协议书范本
2014/04/09 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
建设单位项目负责人任命书
2014/06/06 职场文书
对照四风自我剖析材料
2014/10/07 职场文书
科技活动周标语
2014/10/08 职场文书
个人贷款收入证明
2014/10/26 职场文书
机关单位保密工作责任书
2015/05/11 职场文书
军事理论课感想
2015/08/11 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript