在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读取Android permission文件
Nov 01 Python
在IIS服务器上以CGI方式运行Python脚本的教程
Apr 25 Python
python基于socket实现网络广播的方法
Apr 29 Python
Pandas 对Dataframe结构排序的实现方法
Apr 10 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
Apr 17 Python
深入浅析python 协程与go协程的区别
May 09 Python
解析Python3中的Import
Oct 13 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
Dec 17 Python
python cv2截取不规则区域图片实例
Dec 21 Python
Pytoch之torchvision.transforms图像变换实例
Dec 30 Python
tensorflow 模型权重导出实例
Jan 24 Python
浅析关于Keras的安装(pycharm)和初步理解
Oct 23 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
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
discuz目录文件资料汇总
2014/12/30 PHP
php中stdClass的用法分析
2015/02/27 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
2015/05/09 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
2019/10/16 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
JQuery优缺点分析说明
2011/04/10 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
jquery仿百度经验滑动切换浏览效果
2015/04/14 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
2015/08/27 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
[01:12]快闪回顾DOTA2亚洲邀请赛(DAC) 静候2018新征程开启
2018/03/11 DOTA
python数据结构之链表详解
2017/09/12 Python
Python wxPython库使用wx.ListBox创建列表框示例
2018/09/03 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
Python中return函数返回值实例用法
2020/11/19 Python
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
英国领先的隐形眼镜在线供应商:Lenstore.co.uk
2019/11/24 全球购物
创伤外科专业推荐信范文
2013/11/19 职场文书
模具专业求职信
2014/06/26 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
Python答题卡识别并给出分数的实现代码
2021/06/22 Python
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android