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

 更新时间:2017年07月11日 09:44:12   作者:flyfoxs  
本篇文章主要介绍了在Python中使用AOP实现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 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python httplib模块使用实例

    Python httplib模块使用实例

    这篇文章主要介绍了Python httplib模块使用实例,httplib模块是一个底层基础模块,本文讲解了httplib模块的常用方法及使用实例,需要的朋友可以参考下
    2015-04-04
  • python实现ID3决策树算法

    python实现ID3决策树算法

    这篇文章主要为大家详细介绍了python实现ID3决策树算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Python中的random.uniform()函数教程与实例解析

    Python中的random.uniform()函数教程与实例解析

    今天小编就为大家分享一篇关于Python中的random.uniform()函数教程与实例解析,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • 一文详解Python中生成器的原理与使用

    一文详解Python中生成器的原理与使用

    生成器表达式本质上就是一个迭代器,是定义迭代器的一种方式,是允许自定义逻辑的迭代器。本文将详细讲解一下Python中生成器的原理与使用,需要的可以参考一下
    2022-05-05
  • Python基于twisted实现简单的web服务器

    Python基于twisted实现简单的web服务器

    这篇文章主要介绍了Python基于twisted实现简单的web服务器,可模拟出简单的web服务器功能,是很实用的技巧,需要的朋友可以参考下
    2014-09-09
  • Python 执行字符串表达式函数(eval exec execfile)

    Python 执行字符串表达式函数(eval exec execfile)

    今天在网上搜寻一些应用的例子时,发现有人用TK仅仅几行代码就写了个简易的计算器,惊为天人。回忆起刚学软件技术基础时编写简易计算器的艰辛,顿时泪流满面
    2014-08-08
  • Python学习开发之图形用户界面详解

    Python学习开发之图形用户界面详解

    当前流行的计算机桌面应用程序大多数为图形化用户界面(Graphic User Interface,GUI),python也提供了多个图形开发界面的库,这篇文章主要给大家介绍了关于Python学习开发之图形用户界面的相关资料,需要的朋友可以参考下
    2021-08-08
  • python进阶之多线程对同一个全局变量的处理方法

    python进阶之多线程对同一个全局变量的处理方法

    今天小编就为大家分享一篇python进阶之多线程对同一个全局变量的处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python使用multiprocessing实现一个最简单的分布式作业调度系统

    Python使用multiprocessing实现一个最简单的分布式作业调度系统

    mutilprocess像线程一样管理进程,这个是mutilprocess的核心,他与threading很是相像,对多核CPU的利用率会比threading好的多,通过本文给大家介绍Python使用multiprocessing实现一个最简单的分布式作业调度系统,需要的朋友参考下
    2016-03-03
  • Python实现一键自动分类管理文件

    Python实现一键自动分类管理文件

    经常杂乱无章的文件夹会让我们找不到所想要的文件,所以本文小编特意为大家介绍了如何制作一个可视化GUI界面,通过输入路径一键点击实现文件分门别类的归档,希望对大家有所帮助<BR>
    2024-01-01

最新评论