在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 

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

相关文章

  • pandas 时间偏移的实现

    pandas 时间偏移的实现

    时间偏移就是在指定时间往前推或者往后推一段时间,即加减一段时间之后的时间,本文使用Python实现,感兴趣的可以了解一下
    2021-08-08
  • numpy中的nan和inf,及其批量判别、替换方式

    numpy中的nan和inf,及其批量判别、替换方式

    在Numpy中,NaN表示非数值,Inf表示无穷大,NaN与任何值计算都是NaN,Inf与0相乘是NaN,其余情况下与Inf运算仍为Inf,可以使用np.isnan(), np.isinf(), np.isneginf(), np.isposinf(), np.isfinite()等函数进行批量判别,返回布尔值数组
    2024-09-09
  • 解析Python3中的Import

    解析Python3中的Import

    本文通过示例代码带领大家一起学习Python3中的Import知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • python 用matplotlib绘制折线图详情

    python 用matplotlib绘制折线图详情

    这篇文章主要讲诉了python 用matplotlib绘制折线图的详细内容,众所周知,matplotlib 是一款功能强大开源的数据可视化模块,凭借着强大的扩展性构建出更高级别的绘图工具接口如seaborn、ggplot,下面我们就根据之前两篇文章基础掌握折线图的绘制,需要的朋友可以参考一下
    2021-12-12
  • python迭代器,生成器详解

    python迭代器,生成器详解

    这篇文章主要介绍了Python中的迭代器和生成器,涉及到Python中很多重要的特性,小编觉得这篇文章写的还不错,需要的朋友可以参考下
    2021-10-10
  • Python 实现图像逐像素点取邻域数据

    Python 实现图像逐像素点取邻域数据

    这篇文章主要介绍了Python 实现图像逐像素点取邻域数据,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python运用于数据分析的简单教程

    Python运用于数据分析的简单教程

    这篇文章主要介绍了Python运用于数据分析的简单教程,主要介绍了如何运用Python来进行数据导入、变化、统计和假设检验等基本的数据分析,需要的朋友可以参考下
    2015-03-03
  • python时间time模块处理大全

    python时间time模块处理大全

    这篇文章主要给大家介绍了关于python时间time模块处理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 详解基于Scrapy的IP代理池搭建

    详解基于Scrapy的IP代理池搭建

    这篇文章主要介绍了详解基于Scrapy的IP代理池搭建,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 终端能到import模块 解决jupyter notebook无法导入的问题

    终端能到import模块 解决jupyter notebook无法导入的问题

    这篇文章主要介绍了在终端能到import模块 而在jupyter notebook无法导入的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论