博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个基于Python 装饰器的缓存库——wrapcache
阅读量:7059 次
发布时间:2019-06-28

本文共 1082 字,大约阅读时间需要 3 分钟。

hot3.png

一、wrapcache地址

首先贴github地址:

A python Function / Method OUTPUT cache system base on function Decorators.

二、使用场景

经常会在某些很小的场合需要缓存一些数据,提高一些性能,而这种缓存又不是经常需要,比如:

  • 两个进程共享数据库,其中只读进程读取数据做一些操作,这个时候,可以将数据库内容缓存一下,避免重复读数据库;
  • 一个web页面数据太多,然而页面并不需要完全的实时性,这个时候就可以将页面内容完全缓存,在过期时间之后,不读数据库,不进行大量计算,这种在一些报告页面非常常见。

这两个场景其实挺常见的,要完成也不难,无非就是存到python 字段,加一个时间戳,判断过期,如果是redis,就直接存redis,并赋予timeout时间就ok了。

自己因为经常遇到这种场景,所以将其封装成一个python库,方便使用。

三、使用

  1. 首先** pip install wrapcache**,支持python2和python3。
  2. 然后**import wrapcache**。
  3. 最后在需要缓存的方法上加上装饰器即可**@wrapcache.wrapcache(timeout = 3)**

其中 @wrapcache.wrapcache(timeout = 3, adapter = RedisAdapter) 有两个参数:

  • timeout, 过期时间,默认为-1,不缓存数据 -adapter,存储器,默认为MemoryAdapter(存到python的全局字典中),可选RedisAdapter(存储到redis中)

注意:如果选择adapter = RedisAdapter,则需要在使用前设置redis市里 调用 RedisAdapter.db = redis_instance

四、DEMO

REDIS_CACHE_POOL = redis.ConnectionPool(host = 'xx.xxx.xx.xxx', port = 6379, password = 'redis_pwd', db = 2)REDIS_CACHE_INST = redis.Redis(connection_pool = REDIS_CACHE_POOL, charset = 'utf8')RedisAdapter.db = REDIS_CACHE_INST #初始化装饰器缓存

转载于:https://my.oschina.net/wzwahl36/blog/598837

你可能感兴趣的文章
华为eNSP中交换机命令行简单介绍
查看>>
Snap up RS3gold 3500M 60% off rs3 for sale &learn
查看>>
oracle函数
查看>>
json与String的转化
查看>>
linux上解压版安装jdk,tomcat
查看>>
科略教育—企业为什么始终处于竞争状态?
查看>>
iphone开发
查看>>
解决:在微信中访问app下载链接提示“已停止访问该网页”
查看>>
使用阿里云ECS自建RDS MySQL从库
查看>>
Linux下sed命令
查看>>
胃病犯了怎么办
查看>>
三星2610打印机故障INTERNAL ERROR - Incomplete Session by time out
查看>>
马哥2016全新Linux+Python高端运维班第五周作业
查看>>
VLAN Tagging VST, EST & VGT on VMWare vSphere
查看>>
JavaScript 中 apply 、call 的详解
查看>>
thinkphp 跨模块调用配置文件信息
查看>>
nohup命令在后台自动执行程序
查看>>
java-第六章-for-循环录入会员信息
查看>>
HQL中 "* only allowed inside aggregate function in SELECT 错误"
查看>>
Linux下 android 开发环境配置
查看>>