最近公司老大抱怨,产品某部分内容访问速度奇慢无比,由于是之前接手的别人的代码,不太清楚业务的具体逻辑,不过,经过查看,内容为无需实时更新的内容,so  直接上缓存。

什么是缓存?

对于后端来说,要做的基本就是接收请求,返回数据,而在返回数据的过程中,我们要对数据库进行查询操作,找到正确的    请求内容,如果要查找的数据量比较大,每次请求的耗时将会是一个非常可怕的事情。这个时候,我们就需要对某些无需实    时更新的内容进行缓存处理,把要返回的内容存放在缓存中,收到数据请求后直接把缓存中的数据返回,如果缓存不存在,    则查询数据库,并且把内容添加进缓存中,以便下次请求。

缓存中应该放置什么内容?

缓存的存在,虽然给我们的访问速度带来了提升,但缓存并不是适用于任何场合,个人理解,对于一些无需实时更新,并且    数据量较大或者查询速度教慢的,可以使用缓存操作。

Django的缓存机制。

在django中,存在多种缓存机制,例如:利用本地内存进行缓存,利用文件系统进行缓存、利用数据库进行缓存等缓存芳    式。

利用数据库进行缓存。

由于Redis这种Key/value的存储方式,使得它很适合做缓存数据库,而django也对Redis有着非常好的支持,所以这里我选    择了使用Redis。

首先,安装Redis数据库。操作非常简单,使用命令进行安装   #sudo apt-get install redis-server(win下可以选择下载相应的    安装包)。

然后,就是缓存的主角,django-redis  (http://django-redis-chs.readthedocs.io/zh_CN/latest/#id2) 具体内容可在官方文档    查看。

Django的配置相关:

如果你是第一次使用Redis,并且是第一次使用django-redis  那么,上面的配置就是你要添加进setting里的内容。

配置完成后,我们就要对想要进行缓存的数据代码进行缓存处理了。

这是一个get请求函数,在请求里,我们首先定义一个key,这个也是我们存储在redis数据库中的key的名字(可以根据需要    随意设置)。然后就是获取key  使用cache.get  尝试获取key  如果key存在,则返回key里面的,无需重复查询数据库。

如果key不存在。

在key不存在的情况下,我们可以执行对数据库的查询操作,然后把查询的内容通过cache.set保存进redis。

参数为(之前声明的key的名字,数据,过期时间)

过期时间是一个比较重要的参数,它指定了你缓存进redis数据库中的数据的生存时间,可以视需求而定。

如果key存在。

直接返回value中的数据,结束。

运行程序后,我们可以通过redis-cil查看我们的数据是否缓存成功。

如果数据存在,则输入keys * 会出现你声明的key的名字。

此外,我们还可以通过ttl [key name] 来查看我们的缓存的生存时间等,具体可参考redis使用教程。

普通的redis缓存其实是一个相对来说简单的事情,通过一个简单的缓存,访问速度确实块了许多,可能对于缓存来说,可以做的还有更多,不过,更多的东西,要等以后变得更加强大了以后再去做了。

Django之django-redis对数据进行简单缓存的更多相关文章

  1. 图解Redis之数据结构篇——简单动态字符串SDS

    图解Redis之数据结构篇--简单动态字符串SDS 前言     相信用过Redis的人都知道,Redis提供了一个逻辑上的对象系统构建了一个键值对数据库以供客户端用户使用.这个对象系统包括字符串对象 ...

  2. 图解Redis之数据结构篇——链表

    前言     Redis链表为双向无环链表!     图解Redis之数据结构篇--简单动态字符串SDS提到Redis使用了简单动态字符串,链表,字典(散列表),跳跃表,整数集合,压缩列表这些数据结构 ...

  3. Django之使用redis缓存session,历史浏览记录,首页数据实现性能优化

    Redis缓存session 配置Django缓存数据到redis中 # diango的缓存配置 CACHES = { "default": { "BACKEND&quo ...

  4. 用Python来操作redis 以及在Django中使用redis

    什么是Redis? Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure server). Redis的键值可以包 ...

  5. django配置使用redis

    通常redis都是用来保存session.短信验证码.图片验证码等数据. 在django上使用redis,先要安装一个包: pip install django-redis==4.8.0(我用的dja ...

  6. 在Django中使用redis:包括安装、配置、启动。

    一.安装redis: 1.下载: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 2.解压 tar -zxvf redis-.tar ...

  7. Django入门第一步:构建一个简单的Django项目

    Django入门第一步:构建一个简单的Django项目 1.简介 Django是一个功能完备的Python Web框架,可用于构建复杂的Web应用程序.在本文中,将通过示例跳入并学习Django.您将 ...

  8. [Django高级之批量插入数据、分页器组件]

    [Django高级之批量插入数据.分页器组件] 批量插入数据 模板层models.py from django.db import models class Books(models.Model): ...

  9. python连接redis、redis字符串操作、hash操作、列表操作、其他通用操作、管道、django中使用redis

    今日内容概要 python连接redis redis字符串操作 redis之hash操作 redis之列表操作 redis其他 通用操作,管道 django中使用redis 内容详细 1.python ...

随机推荐

  1. hihoCoder #1055 : 刷油漆 [ 树形dp ]

    传送门 结果:Accepted     提交时间:2015-05-11 10:36:08 #1055 : 刷油漆 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 上回说到 ...

  2. markdown八条基础语法

    1.空行 答:使用全角打出空格,之后再换行就可以打出空行了 2.标题 答:#表示标题,#表示一级标题,字号最大,一共有六级标题 3.列表 答:- 无序列表,1. 有序列表,注意和文本之间有空格 4.链 ...

  3. hdu6110(线段树+lca)

    题目 http://acm.hdu.edu.cn/showproblem.php?pid=6110 分析 注意到,若干条路径的交一定也是条路径 我们可以维护一个线段树,seg[l..r]存着第l条~第 ...

  4. MySQL事务及Spring事务管理

    事务,是在数据库中用于保证数据正确性的一种机制,涉及到很多概念以及不同的情况,这里做一个总结 相关概念 事务四特性(ACID) 原子性(Atomicity,或称不可分割性):要么全部完成或者全部不完成 ...

  5. 44444444444444444444444444444444dddddddddd66666666666666666666666666

    dddddddddddddddddddddddddddddddddddddddddddddddddddd

  6. java自动识别用户上传的文本文件编码

    原文:http://www.open-open.com/code/view/1420514359234 经常碰到用户上传的部分数据文本文件乱码问题,又不能限制用户的上传的文件编码格式(这样对客户的要求 ...

  7. 全文搜索引擎 Elasticsearch 安装

    全文搜索引擎 Elasticsearch 安装 学习了:http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html 拼音:https://www ...

  8. Java中正则Matcher类的matches()、lookAt()和find()的差别

    參考博文地址:http://www.oseye.net/user/kevin/blog/170 1.matcher():仅仅有在整个字符串全然匹配才返回true,否则返回false. 可是假设部分匹配 ...

  9. win7下装ubuntu双系统后无法进入win7的解决方法

    本来电脑的系统是win7,然后用u盘装了ubuntu之后可能会出现开机没有引导界面而直接进入ubuntu系统的情况. 原因:没有设置gurb引导 解决方法:需要更新gurb来使ubuntu识别出win ...

  10. C#结构类型图

    C#结构类型图     分类: C#