在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基于右递归解决八皇后问题的方法
May 25 Python
Python使用Mechanize模块编写爬虫的要点解析
Mar 31 Python
Python实现感知器模型、两层神经网络
Dec 19 Python
python机器学习之神经网络(二)
Dec 20 Python
Python中判断输入是否为数字的实现代码
May 26 Python
Python中交换两个元素的实现方法
Jun 29 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
python画图--输出指定像素点的颜色值方法
Jul 03 Python
django 类视图的使用方法详解
Jul 24 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
Django发送邮件和itsdangerous模块的配合使用解析
Aug 10 Python
tensorboard 可视化之localhost:6006不显示的解决方案
May 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
PHP Session 变量的使用方法详解与实例代码
2013/09/11 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
php计算一个文件大小的方法
2015/03/30 PHP
PHP实现生成唯一会员卡号
2015/08/24 PHP
javascript import css实例代码
2008/07/18 Javascript
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
Python计算斗牛游戏概率算法实例分析
2017/09/26 Python
Python----数据预处理代码实例
2019/03/20 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
HTML5 Convas APIs方法详解
2015/04/24 HTML / CSS
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
毕业生就业推荐信范文
2013/12/01 职场文书
一份报关员的职业规划范文
2014/01/08 职场文书
公司门卫管理制度
2014/02/01 职场文书
初一新生军训方案
2014/05/22 职场文书
2014年司法局工作总结
2014/12/11 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
幼儿园中秋节活动总结
2015/03/23 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
企业宣传稿范文
2015/07/23 职场文书
高中地理教学反思
2016/02/19 职场文书