首页 > 数据库 >Django使用redis缓存服务器

Django使用redis缓存服务器

时间:2023-06-11 17:32:25浏览次数:40  
标签:缓存 cache redis Django 60 user key

       redis相信大家都很熟悉了,和memcached一样是一个高性能的key-value数据库,至于什么是缓存服务器,度娘都有很明白的介绍了,我在这里就不一一介绍了。


那我们一般什么情况下才会使用缓存服务器呢?可不是什么情况都需要的哦,一般来说是在需要频繁对一个字段读取的时候才会需要将这个字段放入到缓存服务器上,而且由于key-value数据库一般只是放很简单的数据,所以在选择保存的对象的时候要注意选择好。


下面我就来介绍如何在Django中配置使用redis数据库,首先是先安装redis了,在Ubuntu中执行下面这句命令:


#安装Redis服务器端



sudo  apt-get  install  redis-server

然后为了能在Django中使用redis,还需要安装redis for Django的插件:



pip  install  django-redis

这是一个开源的项目,github地址是https://github.com/niwibe/django-redis,感谢作者。


那么现在就是在Django的settings中配置了。



CACHES  =  {
     'default' : {
         'BACKEND' :  'redis_cache.cache.RedisCache' ,
         'LOCATION' :  '127.0.0.1:6379' ,
         "OPTIONS" : {
             "CLIENT_CLASS" :  "redis_cache.client.DefaultClient" ,
         },
     },
}
REDIS_TIMEOUT = 7 * 24 * 60 * 60
CUBES_REDIS_TIMEOUT = 60 * 60
NEVER_REDIS_TIMEOUT = 365 * 24 * 60 * 60

其实只是需要CACHES中的那几条就可以了,后面这三句可以不需要的,只是我后面的例子里需要用到,我就在这里配置了。


好了,现在连接和配置都已经完成了,那么在项目中该如何使用呢?接下来看下面这段例子吧。



from  django.conf  import  settings
from  django.core.cache  import  cache
#read cache user id
def  read_from_cache( self , user_name):
     key  =  'user_id_of_' + user_name
     value  =  cache.get(key)
     if  value  = =  None :
         data  =  None
     else :
         data  =  json.loads(value)
     return  data
#write cache user id
def  write_to_cache( self , user_name):
     key  =  'user_id_of_' + user_name
     cache. set (key, json.dumps(user_name), settings.NEVER_REDIS_TIMEOUT)

通过上面的这两个方法就可以实现对redis的读取操作了,只需要将需要的字段当参数传入到方法中就好了。


那么之前提到的memcached呢?其实也是一样的配置:



CACHES  =  {
     'default' : {
         'BACKEND' :  'django.core.cache.backends.memcached.MemcachedCache' ,
         'LOCATION' :  '127.0.0.1:11211' ,
     }
}

当然用法也是和我上面的例子是一样的了。其实对于redis这样的缓存服务器来说,配置都是很简单的,而具体的使用也不难,官网上面也有很多简单明了的例子可以供我们参考,只有一点需要注意的,那就是对于要将什么样的信息保存到redis才是我们真正需要关心的。


 


标签:缓存,cache,redis,Django,60,user,key
From: https://blog.51cto.com/u_6186189/6458379

相关文章

  • Redis学习笔记4-脚本、持久化和集群 Redis学习笔记1-基础命令及数据结构: http://blog.
        Redis学习笔记4-脚本、持久化和集群Redis学习笔记1-基础命令及数据结构:http://blog.guoyb.com/2016/07/21/learn-redis-basic-commands/Redis学习笔记2-事务与过期时间:http://blog.guoyb.com/2016/08/23/learn-redis-adv/Redis学习笔记3-排序与消息通知:http://blog......
  • Redis之Redisson原理详解
    目录1Redisson1.1简介1.2与其他客户端比较1.3操作使用1.3.1pom.xml1.3.2配置1.3.3启用分布式锁1.4大致操作原理1.5RLock1.5.1RLock如何加锁1.5.2解锁消息1.5.3锁续约1.5.4流程概括1.6公平锁1.6.1java中公平锁1.6.2RedissonFairLock1.6.3公平锁加锁步骤1Redisso......
  • Django的项目框架搭建
    1.1创建项目project,创建应用myapp#创建项目框架tpdemodjango-adminstartprojecttpdemocdproject#在项目中创建一个应用pythonmanage.pystartappmyapp#创建模板目录mkdirtemplatesmkdirtemplates/myapp如图所示1.2编辑tpdemo/tpdemo/sittings.py文件,配置......
  • Vue_Django 登录注册+图书管理系统
    Vue前端注册页面点击查看代码<template><divclass="register"><el-row:gutter="20"><el-col:span="12":offset="6"><divclass="grid-contentbg-purple">&......
  • Django3中分组查询的一个坑
    最近在学习django的分组查询,发现使用通常的values加annotate方法,获取不到我想要的结果,后来通过查询官方文档得到答案一、问题描述1.1模型fromdjango.dbimportmodels#Createyourmodelshere.classGoods(models.Model):g_name=models.CharField(max_length=......
  • Django的staticfiles库
    staticfiles库是Django提供的一个用于管理静态文件的库,它提供了一些工具和函数来帮助开发者在Django应用程序中管理和提供静态文件服务。在Django应用程序中,静态文件通常包括CSS样式文件、JavaScript脚本文件、图像文件以及其他一些资源文件。这些静态文件通常需要被服......
  • django
    1常用指令pipinstalldjango-ihttps://pypi.douban.com/simple/#使用豆瓣镜像安装djangodjango-adminstartprojectmysite#创建个人项目pythonmanage.pyrunserver#启动项目pythonmanage.pystartapppolls#创建投票应用pythonmanage.pymakemigrations#......
  • NoSQL生态系统——类似Bigtable列存储,或者Dynamo的key存储(kv存储如BDB,结构化存储如red
    摘自:http://www.ituring.com.cn/article/4002#NoSQL系统的数据操作接口应该是非SQL类型的。但在NoSQL社区,NoSQL被赋予了更具有包容性的含义,其意为NotOnlySQL,即NoSQL提供了一种与传统关系型数据库不太一样的存储模式,这为开发者提供了在关系型数据库之外的另一种选择。在关联型的数......
  • Redis
    Redis1Nosql概述1.1为什么要用Nosql单机MySQL的年代90年代,一个基本的网站访问量一般不会太大,单个数据库完全足够!那个时候,更多的去使用静态页面Html~,服务器根本没有太大的压力!思考一下,这种情况下:整个网站的瓶颈是什么?1.数据量如果太大,一个机器放不下了!2.数据的索引(B+T......
  • 互联网公司面试必问的Redis题目
    作为一个后端开发人员,在面试的时候,Redis是必问的,那么下面咱们来把Redis一般面试常问问题汇总一下。介绍Redis是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API的非关系型数据库。A=原子性(Atomici......