在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与js)两种实现
Feb 21 Python
python在windows命令行下输出彩色文字的方法
Mar 19 Python
python用pickle模块实现“增删改查”的简易功能
Jun 07 Python
Python探索之爬取电商售卖信息代码示例
Oct 27 Python
Python 忽略warning的输出方法
Oct 18 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
对Python捕获控制台输出流的方法详解
Jan 07 Python
详解Python用户登录接口的方法
Apr 17 Python
python删除文件夹下相同文件和无法打开的图片
Jul 16 Python
keras得到每层的系数方式
Jun 15 Python
Python延迟绑定问题原理及解决方案
Aug 04 Python
python实现磁盘日志清理的示例
Nov 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的库,结果发现很多东西
2006/12/31 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
一个符号插入器 中用到的js代码
2007/09/04 Javascript
javascript 按键事件(兼容各浏览器)
2013/12/20 Javascript
javascript计时器详解
2015/02/28 Javascript
JavaScript中property和attribute的区别详细介绍
2015/03/03 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
2017/04/20 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
vue弹窗消息组件的使用方法
2020/09/24 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
Vue.js组件通信之自定义事件详解
2019/10/19 Javascript
[01:07:21]NAVI vs VG Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
Python中if __name__ == "__main__"详细解释
2014/10/21 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
2017/04/24 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
Python2/3中urllib库的一些常见用法
2017/12/19 Python
简单了解python数组的基本操作
2019/11/26 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
应届生体育教师自荐信
2013/10/03 职场文书
年终自我鉴定
2013/10/09 职场文书
我为自己代言广告词
2014/03/18 职场文书
2015年营业员工作总结
2015/04/23 职场文书
2015年度企业工作总结
2015/05/21 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python