Django中redis的使用(二)
2021/9/8 2:06:19
本文主要是介绍Django中redis的使用(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
2.手动操作redis
通过配置获取django_redis的get_redis_connection,进行操作,如下:
from django_redis import get_redis_connection conn = get_redis_connection("default") # redis.client.StrictRedis # 支持所有redis的接口 conn.hset('hash_test','k1','v1') # 也可以手动将数据清除 get_redis_connection("default").flushall() # 得知连接池的连接数 get_redis_connection("default").connection_pool
3.全站缓存
主要使用两个中间件实现:
-
FetchFromCacheMiddleware :从缓存中读取数据
-
缓存状态为200的GET和HEAD请求的响应(除非响应头中设置不进行缓存)
-
对具有不同查询参数的相同URL的请求的响应被认为是各自不同的页面,并且被分别单独缓存。
-
该中间件会使用与对应的GET请求相同的响应头来回答HEAD请求,即可以为HEAD请求返回缓存的GET响应。
-
-
UpdateCacheMiddleware :将数据更新到缓存中
-
该中间件会自动在每个响应中设置几个headers:
-
设置Expires为当前日期/时间 加上 定义的CACHE_MIDDLEWARE_SECONDS值,GMT时间
-
设置响应的Cache-Control的max-age,值是定义的CACHE_MIDDLEWARE_SECONDS值。
-
-
如果视图设置了自己的缓存时间(即设置了Cache-Control 的max age),那么页面将被缓存直到到期时间,而不是CACHE_MIDDLEWARE_SECONDS。
使用装饰器 django.views.decorators.cache可以设置视图的到期时间(使用cache_control()装饰器,代码:@cache_control(max_age=3600))或禁用视图的缓存(使用never_cache()装饰器,代码:@never_cache)
-
如果USE_I18N设置为True,则生成的缓存key将包含当前语言的名称,这样可以轻松缓存多语言网站,而无需自己创建缓存密钥。
-
如果 USE_L10N设置为True 并且 USE_TZ被设置为True,缓存key也会包括当前语言
-
在settings的中间件中设置:
MIDDLEWARE = [ 'django.middleware.cache.UpdateCacheMiddleware', # 其他中间件... 'django.middleware.cache.FetchFromCacheMiddleware', ]
注意:UpdateCacheMiddleware必须是第一个中间件,FetchFromCacheMiddleware必须是最后一个中间件
然后,将以下必需设置添加到Django的settings文件中:
-
CACHE_MIDDLEWARE_ALIAS - 用于存储的缓存别名。
-
CACHE_MIDDLEWARE_SECONDS - 每个页面应缓存的秒数。
-
CACHE_MIDDLEWARE_KEY_PREFIX - 用于生成缓存key的前缀,如果使用相同的Django安装在多个站点之间共享缓存,请将其设置为站点名称或此Django实例特有的其他字符串,以防止发生密钥冲突。如果你不在乎,请使用空字符串。
CACHE_MIDDLEWARE_ALIAS = 'default' CACHE_MIDDLEWARE_SECONDS = 10 CACHE_MIDDLEWARE_KEY_PREFIX = ''
在视图中:
def index(request): # 通过设置时间戳,进行多次访问,可以看到时间戳的变化,就可以得知是否是缓存页面了 return HttpResponse('欢迎光临,当前时间戳:' + str(time.time()))
这篇关于Django中redis的使用(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-08阿里云Redis项目实战入门教程
- 2024-11-08阿里云Redis资料:新手入门与初级使用指南
- 2024-11-08阿里云Redis教程:新手入门及实用指南
- 2024-11-07阿里云Redis学习入门:新手必读指南
- 2024-11-07阿里云Redis学习入门:从零开始的操作指南
- 2024-11-07阿里云Redis学习:初学者指南
- 2024-11-06阿里云Redis入门教程:轻松搭建与使用指南
- 2024-11-02Redis项目实战:新手入门教程
- 2024-10-22Redis入门教程:轻松掌握数据存储与操作
- 2024-10-22Redis缓存入门教程:快速掌握Redis缓存基础知识