python使用redis做缓存_在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',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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值