在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通过openpyxl生成Excel文件的方法
May 12 Python
python中enumerate函数用法实例分析
May 20 Python
numpy中索引和切片详解
Dec 15 Python
cmd运行python文件时对结果进行保存的方法
May 16 Python
python实现requests发送/上传多个文件的示例
Jun 04 Python
python添加模块搜索路径和包的导入方法
Jan 19 Python
Django自定义用户登录认证示例代码
Jun 30 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
TensorFlow中如何确定张量的形状实例
Jun 23 Python
python如何使用腾讯云发送短信
Sep 17 Python
python 实现性别识别
Nov 21 Python
python绘图subplots函数使用模板的示例代码
Apr 30 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利用curl抓取新浪微博内容示例
2014/04/27 PHP
PHP中addcslashes与stripcslashes函数用法分析
2016/01/07 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
javascript分页代码实例分享(js分页)
2013/12/13 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
JS仿hao123导航页面图片轮播效果
2016/09/01 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
举例讲解Python中装饰器的用法
2015/04/27 Python
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
python实现连连看游戏
2020/02/14 Python
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
员工辞职信怎么写
2015/02/27 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS