博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django使用redis缓存,使用多个缓存
阅读量:4300 次
发布时间:2019-05-27

本文共 2117 字,大约阅读时间需要 7 分钟。

如果不配置缓存,django默认使用local-memory缓存,就本地内存缓存。

用cache-page装饰器做一个视图缓存测试:

@cache_page(60*5)def page_cache(request):    time.sleep(5)    return HttpResponse('cache_page')

浏览器第一次访问,5秒后返回cache_page,300s内再次访问,会立刻返回结果。

cache-page用的local-memory默认缓存,所以redis中肯定是空的。

127.0.0.1:6379> keys *

(empty list or set)

修改默认缓存为redis:

CACHES = {      "default": {        "BACKEND": "django_redis.cache.RedisCache",        "LOCATION": "redis://127.0.0.1:6379/0",        "OPTIONS": {            "CLIENT_CLASS": "django_redis.client.DefaultClient",        }    }}

再次访问后,查看redis

127.0.0.1:6379> keys *

1) ":1:views.decorators.cache.cache_header..1517a57fc33cb5df12628c4ef1a6cca5.en-us.UTC"

2) ":1:views.decorators.cache.cache_page..GET.1517a57fc33cb5df12628c4ef1a6cca5.d41d8cd98f00b204e9800998ecf8427e.en-us.UTC"

可以看出,redis中已经成功将页面缓存,有两个键。

配置多个缓存,一个默认本地内存缓存,一个redis缓存:

CACHES = {    'default': {        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',        'OPTIONS': {            'MAX_ENTRIES': 1000,        }    },    "redis": {        "BACKEND": "django_redis.cache.RedisCache",        "LOCATION": "redis://127.0.0.1:6379/0",        "OPTIONS": {            "CLIENT_CLASS": "django_redis.client.DefaultClient",        }    }}

修改视图:

装饰器中通过cache参数选择使用哪个缓存。

@cache_page(60*10)#使用reids缓存def page_cache(request,cache='redis'):#使用默认的内存缓存#def page_cache(request,cache='default'):    time.sleep(5)    return HttpResponse('cache_page')

如果使用默认缓存,redis为空,如果使用redis缓存,通过keys * 就能看到键值。

使用The low-level cache api

重写一个视图:

from django.core.cache import cachefrom django.core.cache import cachesimport randomdef muti_cache(request):    #res_key=cache.get('res_key')    res_key=caches['redis'].get('res_key')    #res_key=caches['default'].get('res_key')    if not res_key:        res_key = random.randint(0,100)        cache.set('res_key','cache_key', 300)    return HttpResponse(res_key)

导入的cache就是配置的默认缓存,caches相当于全部缓存集

cache=caches['default']

通过caches['redis']选择redis缓存

浏览器第一次访问,返回一个随机数

300秒内再次访问,就会返回缓存设置的cache_key

查看redis已经存入res_key-cache_key键值对:

127.0.0.1:6379> keys *

1) ":1:res_key"

参考:

django-redis文档:

low-level-cache-api文档:

cache-page:

多个缓存:

 

转载地址:http://akxws.baihongyu.com/

你可能感兴趣的文章
学习笔记_vnpy实战培训day04_作业
查看>>
OCO订单(委托)
查看>>
学习笔记_vnpy实战培训day05
查看>>
学习笔记_vnpy实战培训day06
查看>>
Python super钻石继承
查看>>
回测引擎代码分析流程图
查看>>
Excel 如何制作时间轴
查看>>
股票网格交易策略
查看>>
matplotlib绘图跳过时间段的处理方案
查看>>
vnpy学习_04回测评价指标的缺陷
查看>>
ubuntu终端一次多条命令方法和区别
查看>>
python之偏函数
查看>>
vnpy学习_06回测结果可视化改进
查看>>
读书笔记_量化交易如何建立自己的算法交易01
查看>>
设计模式03_工厂
查看>>
设计模式04_抽象工厂
查看>>
设计模式05_单例
查看>>
设计模式06_原型
查看>>
设计模式07_建造者
查看>>
设计模式08_适配器
查看>>