在Python中使用AOP实现Redis缓存示例

发布时间 - 2026-01-11 02:16:52    点击率:

越来越觉得的缓存是计算机科学里最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实现Redis缓存  # Python  # Redis缓存  # Python实现缓存  # 浅析python实现布隆过滤器及Redis中的缓存穿透原理  # Python的Flask框架使用Redis做数据缓存的配置方法  # Python 使用 Redis 作为缓存的操作方法  # 就来  # 大家多多  # 小伙伴们  # db  # password  # host  # port  # xxxx  # KEY  # return  # pickle  # data  # val  # print  # find 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速搭建高效服务器建站系统?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何在香港免费服务器上快速搭建网站?  如何在建站之星网店版论坛获取技术支持?  python中快速进行多个字符替换的方法小结  详解vue.js组件化开发实践  Laravel如何实现事件和监听器?(Event & Listener实战)  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  如何在IIS7上新建站点并设置安全权限?  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  详解CentOS6.5 安装 MySQL5.1.71的方法  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  linux写shell需要注意的问题(必看)  MySQL查询结果复制到新表的方法(更新、插入)  如何快速查询网站的真实建站时间?  Python文件流缓冲机制_IO性能解析【教程】  如何实现javascript表单验证_正则表达式有哪些实用技巧  三星网站视频制作教程下载,三星w23网页如何全屏?  敲碗10年!Mac系列传将迎来「触控与联网」双革新  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Laravel怎么清理缓存_Laravel optimize clear命令详解  焦点电影公司作品,电影焦点结局是什么?  Laravel怎么判断请求类型_Laravel Request isMethod用法  Android利用动画实现背景逐渐变暗  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  如何在企业微信快速生成手机电脑官网?  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  如何在IIS7中新建站点?详细步骤解析  Android okhttputils现在进度显示实例代码  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  如何在宝塔面板创建新站点?  高端智能建站公司优选:品牌定制与SEO优化一站式服务