在Python中使用AOP实现Redis缓存示例
作者:flyfoxs 发布时间:2021-09-12 11:18:45
标签:Python,Redis缓存
越来越觉得的缓存是计算机科学里最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
来源:http://flyfoxs.iteye.com/blog/2383929?utm_source=tuicool&utm_medium=referral
0
投稿
猜你喜欢
- 在记忆里,关于时间方面常的SQL也就下面这两个了,大多数朋友问题中所涉及到的数据库都ACCESS的,在些,也就写出这两SQL了。年代久远,目
- 一、简介shutil是 python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建、删除、查看等方法,还
- Vue作为前端三大框架之一截至到目前在github上以收获44,873颗星,足以说明其以悄然成为主流。16年10月Vue发布了2.x版本,经
- 准备工作1.安装scrapy_redis包,打开cmd工具,执行命令pip install scrapy_redis2.准备好一个没有BUG
- 一、Python函数中的参数1、使用python的函数时,有参数类别,比如位置参数、关键字参数、可变长参数2、位置参数、关键字参数很好理解,
- 在安装mha4mysql时,大概步骤是:解压,perl Makefile.PL,make, make install。在执行 perl Ma
- 启动mysql服务(以管理员身份运行cmd)net start mysql连接mysqlmysql -u root -p常用命令Databa
- 准备工作(接上篇文章的示例也可以):1. 在index.js文件中引入任一js文件import sum from './sum
- 前言许多 Web 应用依赖大量的 I/O (输入/输出) 操作,比如从网站上下载图片、视频等内容;进行网络聊天或者针对后台数据库进行多次查询
- 简单演示import matplotlib.pyplot as pltimport numpy as np# 从[-1,1]中等距去50个数
- 我用asp+access写程序, sql="select *&
- 前言.net core来势已不可阻挡。既然挡不了,那我们就顺应它。了解它并学习它。今天我们就来看看和之前.net版本的配置文件读取方式有何异
- 本文为大家分享了mysql 8.0.20 winx64安装配置方法,记录如下。MySQL官网:链接直接点击链接也可以下载:mysql 8.0
- 如下所示:plt.subplots_adjust(left=None,bottom=None,right=None,top=None,wsp
- 9月23,Django 发布了2.0a1版本,这是一个 feature freeze 版本,如果没有什么意外的话,2.0正式版不会再增加新的
- 本文实例讲述了ASP.NET数据库操作类。分享给大家供大家参考,具体如下:using System;using System.Data;us
- 本文研究的主要是python删除过期log文件的相关内容,具体介绍如下。1. 用Python遍历目录os.walk方法可以很方便的得到目录下
- js 闭包(closure)是Javascript语言的一个难点,也是它的特色。闭包的作用:通过一系方法,将函数内部的变量(局部变量)转化为
- ASP里两种常用的生成文件的方式是:利用ADODB.Stream生成文件和利用Scripting.FileSystemObject(fso)
- 现在有一个横向的IFRAME,需要通过点击iframe外的一个图片来横向滚动iframe内的一个html页,但又不想让看见iframe的滚动