在Python中使用AOP实现Redis缓存示例
越来越觉得的缓存是计算机科学里最NB的发明(没有之一),本文就来介绍了一下在Python中使用AOP实现Redis缓存示例,小伙伴们一起来了解一下
importredis enable=True #enable=False defreadRedis(key): ifenable: r=redis.Redis(host='10.224.38.31',port=8690,db=0,password='xxxx') val=r.get(key) ifvalisNone: print"cannotfinddataforKEY:%s\n"%(key) returnNone else: print"====GetVALUEfromRedisbyKEY:%s\n"%(key) returnpickle.loads(val) else: print"disablecache" defwriteRedis(key,val): r=redis.Redis(host='10.224.38.31',port=8690,db=0,password='xxxx') ifvalisNone: print"ValisNone,don'tsaveittoredis\n" else: r.set(key,pickle.dumps(val)) r.expire(key,60*60*24*7)#1week print"====WritevalueofKEY:%storedis\n"%(key) importpickle,functools defcache(f): defwrapper(*args,**kwargs): key=pickle.dumps((f.__name__,args,kwargs)).replace("\n","") val=readRedis(key) ifvalisNone: val=f(*args,**kwargs)#callthewrappedfunction,saveincache writeRedis(key,val) returnval#readvaluefromcache functools.update_wrapper(wrapper,f)#updatewrapper'smetadata returnwrapper @cache deffoo(n): returnn*2 foo(10)#firstcallwithparameter10,sleeps foo(10)#returnsimmediately foo(15)#returnsimmediately foo(19)#returnsimmediately
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。