当前位置: 首页 > 网络应用技术

如何使用Django缓存(Django使用Redis Cache)

时间:2023-03-07 22:52:44 网络应用技术

  本文将告诉您如何使用Django缓存,Django使用REDIS缓存的相应知识点。我希望这对您有帮助。不要忘记收集此网站。

  本文目录清单:

  1.如何清理Django生成的高速缓存2. Django-Redis与DRF结合使用以实现缓存3.如何使用Django中的Redis Cache Server在Django中找到详细的教程4。如何将Redis用作Django 5中的缓存服务器。什么是Django?6.如何为SAE DJANGO项目设置完整的MEMCACACACACH CACHE。使用一个过程来执行代码,因此将同时又有新旧。您重新启动Django。

  但是,您还有另一种可能替换页面的可能性。Django的缓存修饰符在视图上使用。在这种情况下,您需要首先删除所有服务器上的缓存。

  如果解决问题,请采用它!

  如果没有解决,请继续询问

  1. django_redis

  1. Django-Redis基于BSD许可证。这是一个功能齐全的组件,使Django能够支持REDIS缓存/会话。

  2. Django-Redis自己的优势:

  ●连续更新

  ●局部redis-py URL符号连接字符串

  ●扩展客户

  ●可扩展的解析器

  ●可扩展的序列化器

  ●默认客户所有者/支持

  ●完美测试

  ●在某些项目的生产环境中,将其用作缓存和会话

  ●没有时间安装时间

  ●本地输入REDIS客户/连接池支持

  ●高配置(例如,模拟缓存的异常行为)

  ●默认支持UNIX插座

  ●支持Python 2.7、3.4、3.5和3.6

  3.推荐版本

  第四,django_redis基本使用操作:

  5. Django项目中的配置格式

  6.定制的Redis工具类

  七个,自定义redis密钥协议

  8.查看通话缓存

  django-redis中文文档

  Andrey Antukh,niwi@niwi.be 4.7.0

  翻译:Rapospectre

  1介绍

  Django-Redis是基于BSD许可证的。这是一个功能齐全的组件,使Django能够支持REDIS缓存/会话。

  1.1为什么要使用django-redis?

  因为:

  不断更新

  局部redis-py URL符号连接字符串

  可扩展的客户

  可伸缩性解析器

  可扩展的序列化器

  默认客户所有者/支持

  完美测试

  它在某些项目的生产环境中被用作缓存和会话

  不支持超时设置

  对本地的支持进入REDIS客户端/连接池支持

  高配置(例如模拟缓存的异常行为)

  默认支持UNIX插座

  支持Python 2.7、3.4、3.5和3.6

  1.2可用的django-redis版本

  稳定版本:4.7.0

  稳定版本:3.8.4

  1.3我应该使用哪个版本

  版本编号就像3.6、3.7 ...主要的分销版本将包含与落后性不兼容的内容。升级之前,请阅读升级日志。

  版本号就像3.7.0、3.7.1 ...以及其他小更新或错误修复。通常,它将仅包括错误修复。没有功能更新。

  1.4依赖性

  1.4.1 Django版本支持

  django-redis 3.8.x支持Django 1.4、1.5、1.6、1.7(也许会有1.8)

  django-redis 4.4.x支持Django 1.6、1.7、1.8、1.9和1.10

  1.4.2 REDIS服务器支持

  django-redis 3.x.y支持redis服务器2.6.x或更高

  django-redis 4.x.y支持redis服务器2.8

  有很多方法可以实现缓存,本地内存缓存,数据库缓存和文件系统缓存。在这里是将REDIS数据库用于缓存的简介。

  环境

  Redis

  django-redis

  配置

  settings.py

  caches = {“ default”:{“ back”:“ django_redis.cache.cache.rediscache”,“ local”:“ redis://127.0.0.0.1:6379/1”,“ options”,“ options”:{“ client_classs”::“:”django_redis。“ client.defaultclient”,“密码”:“ mySecret”

  }

  }

  }

  python manage.py createCachetable1

  缓存具有站点缓存和单个视图缓存

  站点缓存:

  settings.py

  中间件= [#M M CACHE,请注意您必须处于第一个位置

  'django.middleware.cache.updatecachemiddleware',

  ...#... ... ...,请注意,您必须处于最后一个位置

  'django.middleware.cache.cache.fetchfromcachemiddle”,

  这是给予的

  查看缓存:

  Views.py

  要求):

  bar = foo.objects.all()返回渲染(请求,'cache/index.html',{'bar':bar':bar})

  根据朋友和同事的强烈建议,我最近开始看到Python。实际上,这主要是因为Python是2007年的一种语言。我该如何与时代保持同步?最近,我似乎一直都有一定的经验。我希望与您分享。

  我不打算从PY的语法基础开始,并直接谈论Django的经历:

  要首先与Django联系,您需要了解这可能是他的榜样。建立模型就是一切。对于Java的人员来说,这仍然非常有吸引力(当然,这是动态语言的儿科部门)。看一个模型的示例:

  懒惰,将用户直接带到django-admin中

  类用户(型号。模型):

  用户名= models.charfield(_(_('用户名'),maxlength = 30,unique = true,value_list = [validator.isalphanuseric])

  first_name = models.charfield(_(_('firan name'),maxlength = 30,空白= true)

  last_name = models.charfield(_(_姓氏'),maxlength = 30,空白= true)

  电子邮件= models.emailfield(_(_(_mail地址'),空白= true)

  密码= models.charfield(_(_('密码'),maxlength = 128)

  元类:

  订购=('用户名',)

  每个属性都是库表的字段,它非常简单明了。模型提供了许多类型的字段相似的电子邮件field.different字段具有不同的设置,您可以看到相应的原始设置。

  模型类内还有类元。此类的属性制定了该表的某些访问策略,例如这里的排序。可以使用Model..ok的_Meta属性获得MetAclass中的属性。那么,该模型如何才能实现数据库的灵活操作table.LET看看。

  首先分析/django/django/db/models/base.py,其中包含诸如model.model之类的定义:model:

  看看班级定义的第一行,第一行足以让我考虑一段时间:

  类模型(对象):

  __ metaclass__ = modelbase

  模型使用新样式类定义。对于此内容,您可以让狗看。第一行是__Metaclass_属性的定义。此属性的值是modelbase,它是一个类。该课程的一个例子是此类,我相信您很头晕。然后以这种模型来解释,如果没有__ metaclass__,则实例是一个正常的过程。通过此属性过程,将会有更改:

  第一个呼叫basemodel .__新__(CLS,名称,基础,attrs)。返回值是类型类型,然后使用此类创建一个实例。实际上,basemodel是模型的元模型,用于制定模型类的最终外观。有关Meta类的更多信息,请参阅此处。

  然后我们的眼睛被转移到基本模型班上,我有一种直觉。梅塔(Meta),班级可以最终使用_meta将其带到这里。看一下基本模型的定义。有点长:

  类Modelbase(类型):

  “所有模型的元类”

  def __new __(Cls,Name,Bases,Attrs):

  #如果这不是模型的子类,请不要做任何特别的事情。

  如果名称=='模型'或不过滤(lambda b:issubclass(b,model),基地):#1 1

  返回超级(modelbase,cls).__新__(CLS,名称,基础,attrs)

  #创建类。

  new_class = type .__ new __(Cls,Name,bases,{'__module__':attr.pop('__ module__')})#2 2 2

  new_class.add_to_class('_ meta',options(attr.pop('meta',none)))#3

  new_class.add_to_class('dionNotexist',types.classtype('do notexist',(objectdoesnotexist,),{}),{})

  #建立完整列表#4

  对于基地的基础:

  #todo:检查“ _Meta”的存在是hackish。

  如果在dir(基本)中的'_meta':

  new_class._meta.parents.append(基础)

  new_class._meta.parents.extend(base._meta.parents)

  model_module = sys.modules [new_class .__模块__]

  如果getttr(new_class._meta,'app_label',none)无:

  #通过查找一个级别来找出app_label。

  #对于'django.contrib.sites.models',这将是“大小”。

  new_class._meta.app_label = model_module .__名称__。拆分('。')[-2]#5

  #如果我们有Alream创建此类,请尽早救助。

  m = get_model(new_class._meta.app_label,name,false)#6

  如果m不是没有:

  返回m

  #将所有属性添加到类中。

  对于obj_name,obj in attr.items():

  new_class.add_to_class(obj_name,obj)#7 7

  #ADD字段从父母那里继承

  对于new_class._meta.parents中的父母:

  for parent._meta.fields:

  #仅在此课程死亡时添加火场。

  尝试:

  new_class._meta.get_field(field.name)

  除了fielddoesnotexist:

  field.contribute_to_class(new_class,field.name)#8

  new_class._prepare()

  register_models(new_class._meta.app_label,new_class)#9

  #由于进口的发生方式(递归),我们可能会或可能不会

  #该模型以框架注册的第一类。

  #只能是每个型号的一类,因此我们必须始终返回

  #注册版本。

  返回get_model(new_class._meta.app_label,name,false)#10

  让我们简要分析此代码:

  1.检查课程是否是模型的子类。如果没有,如果您不进行任何治疗,它将直接传递给父过程,这等同于正常处理类别。请注意,当多个继承继承时,超级应严格使用它。

  2.使用类型创建类,创建一个普通的模型类

  3.这句话非常重要。add_to_class是模型中的类方法。实际上,此方法将其传递到名称和值中,以将类属性添加到模型中。看到,原始的神奇_meta来自。add_to_class方法很简单。查看其代码:

  def add_to_class(CLS,名称,值):

  如果名称=='admin':

  assert type(value)== types.classtype,“%s model MST的%r属性为类,而不是%s对象”%(name,cls ._____,type(value))

  值=管理

  如果hasattr(value,'contrute_to_class'):

  value.contribute_to_class(CLS,名称)

  别的:

  setttr(CLS,名称,值)

  add_to_class = classMethod(add_to_class)

  最后一句话是将此方法提出为类方法。特征是该方法的第一个参数是类。实际上,ClassMethod是装饰器。2.4之后,您可以使用@进行简要介绍。我在这里要提及的是他对管理员的特殊处理。尽管管理模块不在管理模块中,但仍与管理员的内容绑定。以下是“ contrute_to_class”方法的特殊处理。为什么django不会得到脱杯点?也将其包装成选项,一个是在基本模型(该元的包装)中制成的,另一个是在add_to_to_class方法中制成的。这有点不合理。我可能不太了解。我不知道他的意图。

  4.元的集成,此类选项提供继承方法

  5.获取Applabel,也就是说,将模型的名称分为第二个。我喜欢诸如2之类的设置

  6. GET_MODEL方法将其输入缓存。

  7.取出所有类属性,然后再进行一次,然后将一般属性安定回。如果此属性具有contrute_to_class,则可以执行该属性(可以完全这样的处理。

  8.每个文件调用自己的控制_to_class方法用于特殊处理

  9.输入缓存,我们暂时致电缓存。

  10.很明显地看到注释。我们必须将模型放在缓存中。

  1

  最初在服务管理-Memcache中初始化Memcache服务,并分配适当的容量。

  2

  修改设置。py,添加配置:

  3

  一段时间后,您可以在SAE服务管理中观察缓存命中率和内存使用量

  引入Django Cache和Django带有REDIS CACHE的引入已经结束。我想知道您是否找到所需的信息?如果您想进一步了解此信息,请记住要收集对该网站的关注。