Django使用redis缓存服务器的实现代码示例


Posted in Python onApril 28, 2019

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才是我们真正需要关心的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的集合类型知识讲解
Aug 19 Python
Python3调用微信企业号API发送文本消息代码示例
Nov 10 Python
深入理解Python中的super()方法
Nov 20 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
解决Pycharm中import时无法识别自己写的程序方法
May 18 Python
python读取txt文件,去掉空格计算每行长度的方法
Dec 20 Python
Python画图高斯分布的示例
Jul 10 Python
python多进程并行代码实例
Sep 30 Python
pycharm双击无响应(打不开问题解决办法)
Jan 10 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
Python Django模型详解
Oct 05 Python
django的settings中设置中文支持的实现
Apr 28 #Python
Django数据库类库MySQLdb使用详解
Apr 28 #Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 #Python
​如何愉快地迁移到 Python 3
Apr 28 #Python
python学习开发mock接口
Apr 28 #Python
Python简单基础小程序的实例代码
Apr 28 #Python
python实现Excel文件转换为TXT文件
Apr 28 #Python
You might like
PHP面向对象的使用教程 简单数据库连接
2006/11/25 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
2013/06/09 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
2017/11/25 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
JS cookie中文乱码解决方法
2014/01/28 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
gulp-htmlmin压缩html的gulp插件实例代码
2016/06/06 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
vue实现验证码输入框组件
2017/12/14 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
基于vue的video播放器的实现示例
2021/02/19 Vue.js
Python中属性和描述符的正确使用
2016/08/23 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
Django Celery异步任务队列的实现
2019/07/24 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
通过实例解析python and和or使用方法
2020/11/14 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
方正Java笔试题
2014/07/03 面试题
司机岗位职责
2013/11/15 职场文书
采购内勤岗位职责
2013/12/10 职场文书
大学生个人自荐信
2014/02/24 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
入党综合考察材料
2014/06/02 职场文书
金融管理专业求职信
2014/07/10 职场文书
总经理助理岗位职责范本
2015/03/31 职场文书
活动总结书怎么写
2015/05/11 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
Python函数式编程中itertools模块详解
2021/09/15 Python
Python PIL按比例裁剪图片
2022/05/11 Python
vue递归实现树形组件
2022/07/15 Vue.js
Apache自带的ab压力测试工具的实现
2022/07/23 Servers