redis数据缓存

页面数据的缓存

比如首页信息,不论用户有没有登录,它很多显示的数据时一样的。

减少了数据的查询次数:把页面使用到的数据存放在缓存中,当再次使用这些数据时,先从缓存中获取,如果获取不到再去查询数据库。减少数据库查询次数。

数据库需要查询,文件需要读取比数据库更慢,与之相比内存型的redis数据库较快。

缓存级别:

站点级缓存:直接将整个网站进行缓存。毕竟redis是使用内存,所以不合理。

视图缓存:不合理,每个用户的数据是不同的。

模板片段缓存;在视图中最后返回模板,在返回模板之前就已经把需要的数据进行查询过了,所以也不太合理。

存储缓存常用的方式

Memcache缓存:

   分布式的高速缓存系统,通常用来提高网站的访问速度。

   在本地安装Memcache服务。

   下载解压缓存包,在解压目录下,以管理员身份打开命令行

memcached.exe  -d  install

计算机 --> 鼠标右击 --> 管理

安装django-memcache

pip install python-memcached

到global_settings当中复制cache配置结构到自己的settings当中进行配置。

在settings当中配置

Memcache视图缓存

Memcache 路由缓存

在开发过程当中,是否有可能使用不同的路由指向同一个视图。比如商品的上架和下架功能,不同的路由,指向同一个视图,这个时候就需要针对路由进行缓存

本地缓存 

数据库缓存

Redis数据库缓存

Mysql 缓存

创建对应存放缓存的数据表

设置数据库配置

Python manage.py createcachetable Tab_name

修改settings

缓存使用的方式:  

1.全栈粒度的缓存

Django 全栈缓存通过缓存配置还有中间件来声明

首先配置settings的中间件,配置的位置必须一首一尾

Settings当中配置

  CACHE_MIDDLEWARE_KEY_PREFIX = '' 

同一个django下当多个网站共享缓存的时候,可以将该配置指向当前网站的识别,这个识别通常是域

也可以是其他可以唯一标识该网站的字符,目的为了防止多个网站共享缓存,缓存混淆

CACHE_MIDDLEWARE_SECONDS = 600   全局缓存的寿命

2.视图粒度缓存

3.路由粒度缓存

4.页面粒度缓存

底层缓存接口:

Set 设置cache

Get 获取 cache

Add 添加 cache

合理的缓存方式

底层的缓存API:

from django.core.cache import cache

基本的接口是set(key,value,timeout) 和get(key)

cache.set(‘my_key’,’hello word’,30)

cache.get(‘my_key’)

>>>hello word

缓存可以选择变化不大的页面内容进行缓存:

content={‘types’:types}

因为在工作中如果团队配合进行开发,在admin中没有进行清除缓存的话,那就无限缓存下去了。

所以在设置视图中缓存的时候,需要设置过期时间,避免上述情况的发生。

cache.set(‘index’,content,3600)

在请求时先尝试从缓存中请求数据。

context=cache.get(‘index_page_data’)

if context is None:

print(‘设置缓存’)

#缓存中没有数据
else:
#代码段

什么时候需要更新缓存数据?

当管理员修改信息后,需要更新,和上述提到相同。

只需要在admin中对缓存进行清除就可以。

当用户在下次访问的时候,会再次判断是否有缓存若没有则进行删除。

总结:

以上对网站本身性能的优化。

是通过减少数据库查询次数。这样的优化一定程度上可以防止被攻击。

l例如:DDOS同一时刻,很多电脑对网站发起访问。一个请求就的进行一次处理,同一时间需要查询很多次数据库。那就会造成网站被拖垮,不能提供服务。静态化和缓存就可以避免多次查询数据库。

再有使用nginx提供静态文件,nginx再去提供静态文件,效率很高,再多的访问请求nginx都会很快给出响应。所以一定程度上可以防止恶意攻击。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值