在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迭代用法实例教程
Sep 08 Python
跟老齐学Python之类的细节
Oct 13 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 Python
python从网络读取图片并直接进行处理的方法
May 22 Python
python3.5 + PyQt5 +Eric6 实现的一个计算器代码
Mar 11 Python
Python基于辗转相除法求解最大公约数的方法示例
Apr 04 Python
python将一组数分成每3个一组的实例
Nov 14 Python
详解python实现小波变换的一个简单例子
Jul 18 Python
PyCharm导入python项目并配置虚拟环境的教程详解
Oct 13 Python
python中count函数简单的实例讲解
Feb 06 Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 Python
Python创建简单的神经网络实例讲解
Jan 04 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面向对象编程快速入门
2006/10/09 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
php下获取http状态的实现代码
2014/05/09 PHP
jQuery Mobile + PHP实现文件上传
2014/12/12 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
微信小程序动态生成二维码的实现代码
2018/07/25 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
NodeJS服务器实现gzip压缩的示例代码
2018/10/12 NodeJs
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
Python内置数据类型详解
2014/08/18 Python
在类Unix系统上开始Python3编程入门
2015/08/20 Python
python语言线程标准库threading.local解读总结
2019/11/10 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
C语言笔试集
2012/07/24 面试题
自我评价是什么
2014/01/04 职场文书
高一家长会邀请函
2014/01/12 职场文书
四查四看剖析材料
2014/02/14 职场文书
安全责任书范文
2014/03/12 职场文书
继承公证书
2014/04/09 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
党员评议思想汇报
2014/10/08 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
2015暑期社会实践个人总结
2015/07/13 职场文书
学习委员竞选稿
2015/11/20 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
Python实现智慧校园自动评教全新版
2021/06/18 Python
php解析非标准json、非规范json的方式实例
2022/05/10 PHP