在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命令行参数解析OptionParser类用法实例
Oct 09 Python
详解Python中的文本处理
Apr 11 Python
详解Python Socket网络编程
Jan 05 Python
Django的分页器实例(paginator)
Dec 01 Python
利用python如何处理nc数据详解
May 23 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
对python内置map和six.moves.map的区别详解
Dec 19 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
Mar 12 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 Python
Python实现简单的猜单词小游戏
Oct 28 Python
Python四款GUI图形界面库介绍
Jun 05 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用数组返回无限分类的列表数据的代码
2010/08/08 PHP
php 批量生成html,txt文件的实现代码
2013/06/26 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
2017/03/19 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
js的写法基础分析
2011/01/17 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
jQuery内容过滤选择器用法分析
2015/02/10 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
学习JavaScript设计模式(链式调用)
2015/11/26 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
JS实现多选框的操作
2020/06/24 Javascript
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
Python使用matplotlib绘制动画的方法
2015/05/20 Python
Python过滤txt文件内重复内容的方法
2018/10/21 Python
Python3.4解释器用法简单示例
2019/03/22 Python
Django调用支付宝接口代码实例详解
2020/04/04 Python
详解Anaconda 的安装教程
2020/09/23 Python
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
游戏商店:Eneba
2020/04/25 全球购物
编写类String 的构造函数、析构函数和赋值函数
2012/09/09 面试题
软件测试面试题
2014/01/05 面试题
生物技术专业研究生自荐信
2013/09/22 职场文书
高二英语教学反思
2014/01/19 职场文书
安全检查与奖惩制度
2014/01/23 职场文书
村创先争优活动总结
2014/08/28 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
2015新年寄语大全
2014/12/08 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
幼儿园六一儿童节开幕词
2016/03/04 职场文书
Redis 哨兵集群的实现
2021/06/18 Redis