首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django(39)使用redis配置缓存

每次用户请求页面时,Web服务器都会进行各种计算 – 从数据库查询到模板呈现再到业务逻辑 – 以创建站点访问者看到的页面。从处理开销的角度来看,这比标准的文件读取文件系统服务器要耗时多了。...对于大多数Web应用程序来说,这种开销并不是什么大问题。因为大多数Web应用程序只是中小型网站,没有拥有一流的流量。但对于中到高流量的站点,尽可能减少开销是至关重要的,这就是缓存的用武之地。...Redis是一个内存数据库(现在已经支持内存数据持久化到硬盘当中,重新启动时,会自动从硬盘进行加载),由于其性能极高,因此经常作为中间件、缓存使用。...django应用redis缓存 django中安装第三方库,使用如下命令 pip3 install django-redis 1.settings配置 首先,我们在settings.py中配置如下代码...为了线程安全性,为会每个线程返回缓存的不同实例 作为快捷方式, 默认缓存(default)可以使用 django.core.cache.cache : # 使用 default 缓存 from django.core.cache

1.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

Django 使用 django-redis 作为缓存的正确用法,别忽略缓存使用原则

一般的 web 服务都会设置缓存机制,特别是那些大型的服务,因为请求多,所以为了减少对数据库查询,可以使用缓存来存储一些必要的信息给请求调用。...Django 自身也有一套相对完善的缓存系统,这篇文章来介绍一下使用 redis 作为 Django 缓存使用方法,并且说一下我在使用缓存的过程中遇到的问题。...函数中使用缓存 函数中使用缓存是最基本的使用方法,跟在其他非 django使用的方式一致,无非就是使用 set() 和 get() 方法。...{% load cache %} {% cache 500 'cache_name' %} container {% endcache %} 缓存使用原则 先说一下我在使用缓存的时候遇到的问题...据我目前的理解,下面这些时候可以用缓存: 纯静态页面 读取了数据库信息,但是不经常变动的页面,比如文章热门排行榜,这个调用数据库信息并且还要排序的完全可以使用缓存,因为不需要实时展现最新的 HTML 的片段

3.6K10

Django数据库查询优化与AJAX

orm相关的数据库查询优化 惰性查询 惰性查询指当我们只查数据库而不是用这些数据时,Django不会执行查询数据库的代码,目的是减少不必要的数据库操作,降低数据库的压力。...如: res = models.Book.objects.all()#只有当我们使用res时才会执行数据库查询的操作 all、only与defer all 拿到自己的所有的属性,但是没有与其他表建立外键的属性...这样做的好处:跨表查询也不需要重复走数据库,减轻数据库压力。select_related()括号内放多个外键字段,逗号隔开,会将多个外键字段关联的表与当前表拼成一张大表。...但是问题来了前端如何向后端发生json格式的数据呢?...Django内置的serializers模块 前端想拿到通过orm查到的一个个对象,(数据库里的一条条记录),后端想把直接实例化出来的对象发送给前端,这时候就需要用到Django给我们提供的序列法方式(

2.3K20

Django数据库迁移问题

Django执行数据库迁移 导致原因:因为迁移文件和数据库中的迁移记录不一致 解决办法 python manage.py migrate app名 --fake 迁移文件名 将指定迁移文件标记为已经映射...如果不知道是那个迁移文件出现了问题,可以将这个app下面的所有迁移文件全部删除,然后将数据库中迁移文件表django_migrations中这个app的所有迁移文件全部删除,然后将表的字段和类映射对应清楚后使用...python manage.py makemigrations app_name生成一个迁移文件,然后使用python manage.py migrate --fake-initial将第一个建表的迁移文件保存到数据库中...根据数据库生成模型 令python manage.py inspectdb > 文件路径 需要修正下 名字,可能名字太长,或者会有关键字 模型需要放到相关的app当中 通过外键连接的表需要调整 执行标记命令

1.6K20

Django使用redis缓存服务器

关于和memcached具体可以看Django配置缓存机制 安装该数据库是为了做服务器缓存。以下两种情况都适合使用服务器缓存: 1)数据非经常更新。...若保存到数据库,还需要额外建立一张对应的表存储数据。在Django中建立表通常做法是建立一个模型。看似简单,问题调试麻烦、开发时长久。所以我一直拖着没处理该问题。毕竟一开始访问量不是很多。...直接将数据写入缓存,定时更新。获取数据从服务器缓存获取即可。 下面我就来介绍如何在Django中配置使用redis数据库!...= "default" 3、测试redis缓存 该步骤非必须,只是为了测试看可否正常使用redis。...('key') #获取key为k的缓存 测试没问题,则说明可正常使用

2.4K10

Django | 页面数据的缓存使用

使用Redis数据库 使用redis数据库存储缓存,首先redis是key-value类型的数据库,NoSQL,且也是内存型数据库,redis是将数据加载到内存中,进行操作,并异步将数据备份到硬盘里。...配置django缓存设置 settings.py中添加: CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache...": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } } 使用Django内置的缓存...例子 在视图类或视图函数中,首先先别急着计算页面数据;而是先向缓存读取该页面的数据;若返回一个None;说明没有缓存缓存的数据已经过期;此时才需要进行数据库查询等计算服务 并将更新后的数据写入缓存中,...查询数据等   cache.set(‘index_data’,content,timeout) # 设置缓存 # 渲染页面 缓存设置了过期时间timeout,单位为秒,当到达过期时间之后,该缓存的数据将不会被使用

1.8K40

如何使用Memcached实现Django项目缓存

11211 出现如下界面,表示连接成功,运行quit退出连接 至此,我们成功安装了memcached,并能成功运行,下面介绍Django项目如何去使用它 4....秒 CACHE_MIDDLEWARE_SECONDS=60*60*24 最后,我们在中间件MIDDLEWARE添加memcached所需Django中间件,由于我选择的是缓存全站,所以需要的东西如下:...注意中间件的位置和顺序 'django.middleware.cache.UpdateCacheMiddleware',# 放到中间件第一个位置 ...... # 其他中间件 'django.middleware.cache.FetchFromCacheMiddleware...注意事项 因为我们设置了24小时缓存,所以在缓存期间内,如果你写了一篇博客文章,你的网站不会立马显示出来,等到缓存时间过期,才会更新出来,如果你想立马显示出来,需要手动去清理下缓存,是缓存过期,网站就会重新丛数据库获取数据...,手动是缓存过期,使用如下命令 # 先连接memcached telnet 127.0.0.1 11211 #清除缓存 flush_all

1.4K30

Django使用django-apscheduler的问题

于是便寻找定时任务的模块,就找到了APScheduler,考虑到要在Django使用,后来就采用了django-apscheduler来作为定时任务的模块,但是这个模块本身有bug。...Django定时任务不要使用django-apscheduler模块,直接使用APScheduler模块即可。...APScheduler官方使用指南,在这份指南中明确指出django-apscheduler并不是官方支持的。...使用APScheduler 现在,我们避免了django-apscheduler模块抛出异常问题,但是我们还有一个问题等待解决,那就是uWsgi使用多进程模式启动Django项目,因此我们会有多个进程去执行这个定时任务...Redis分布式锁 redis中放置锁,是可以解决分布式下的问题。当然,如果你没有使用分布式,也是可以使用redis锁的。

2K30

ajax 使用缓存问题

另外最重要的一点是,它会被客户端的浏览器缓存起来,那么,别人就可以从浏览器的历史记录中,读取到此客户的数据,比如帐号和密码等。因此,在某些情况下,get方法会带来严重的安全性问题。...Post方式: 当使用POST方式时,浏览器把各表单字段元素及其数据作为HTTP消息的实体内容发送给Web服务器,而不是作为URL地址的参数进行传递,使用POST方式传递的数据量要比使用GET方式传送的数据量大的多...总之,GET方式传送数据量小,处理效率高,安全性低,会被缓存,而POST反之。...三:AJAX乱码问题   产生乱码的原因:     1、xtmlhttp 返回的数据默认的字符编码是utf-8,如果客户端页面是gb2312或者其它编码数据就会产生乱码     2、post方法提交数据默认的字符编码是...不会自动缓存结果。 "json": 返回 JSON 数据 。 "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?"

2.2K20

python测试开发django-118.json 解析查询数据库 datetime 格式问题

前言 django 查询的结果有日期时间格式的时候,返回的是datetime.datetime(2021, 9, 8, 0, 0)类型数据。...一般需要返回json格式数据,使用json.dumps()转的时候就会报错了 查询带时间的 Teacher模型有add_time日期时间类型DateTimeField # 作者-上海悠悠 QQ交流群:717225969...9, 8, 0, 0}, ] 重写JSONEncoder Json 格式是由 JavaScript 对象为基础创建的轻量级数据格式,而 JS 没有 datetime 数据类型,所以在 Python 中使用...但是django查询数据库默认返回的时间日期就是datetime.datetime()格式的,直接用json.dumps()转会报错TypeError: Object of type ‘datetime...u60a0\u8001\u5e08", "age": 18, "tel": "12313231", "is_delete": "0", "add_time": "2021-09-08 00:00:00"}] django

44710

数据库优化 6. 启用MySQL查询缓存

MySQL Sending data导致查询很慢的问题详细分析 5. mysql查询慢Sending data耗时问题 6. 启用MySQL查询缓存, 7. 最终的解决方案 1. sql语句优化....这个步骤, 能够得出的结论是, 我的这个sql语句使用缓存, 缓存字段是product_id, 但是并没有显示出为什么会这么慢 3....启用MySQL查询缓存 https://www.cnblogs.com/mengfanrong/p/5335724.html 参考这篇文章, 可以设置mysql缓存, 但并不是所有设置了的缓存都会生效...使用起来非常方便, 内部定义了很多配合方法, 简化sql. 2. 使用的是单表查询, 单表查询比连表要快很多, 查询出来以后, 将业务逻辑在代码里拼接, io消耗比与数据库交互少很多....我这个问题就是, 查询出来了所有的数据, 9万条啊, 然后使用stream分组, 分组后去size, 这个操作在数据库一个sql就完事, 用时不到1秒. 可把所有数据查出来, 竟然用了68秒.

2.1K30
领券