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使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
深入理解Python对Json的解析
Feb 14 Python
python编程实现12306的一个小爬虫实例
Dec 27 Python
Python+matplotlib+numpy实现在不同平面的二维条形图
Jan 02 Python
简单实现python收发邮件功能
Jan 05 Python
python获取代理IP的实例分享
May 07 Python
Python字典中的键映射多个值的方法(列表或者集合)
Oct 17 Python
通过字符串导入 Python 模块的方法详解
Oct 27 Python
pytorch-神经网络拟合曲线实例
Jan 15 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
python 生成正态分布数据,并绘图和解析
Dec 21 Python
Python读写Excel表格的方法
Mar 02 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编程语言开发动态WAP页面
2006/10/09 PHP
PHP+MySQL投票系统的设计和实现分享
2012/09/23 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
2019/04/12 PHP
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
Javascript var变量隐式声明方法
2009/10/19 Javascript
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
JQuery 自定义CircleAnimation,Animate方法学习笔记
2011/07/10 Javascript
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
javascript去除空格方法小结
2015/05/21 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
JS实现n秒后自动跳转的两种方法
2020/11/30 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
前端vue+elementUI如何实现记住密码功能
2020/09/20 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
python实现文本文件合并
2015/12/29 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
Python面向对象思想与应用入门教程【类与对象】
2019/04/12 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
教师对照四风自我剖析材料
2014/09/30 职场文书
党员剖析材料范文
2014/12/18 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
归元寺导游词
2015/02/06 职场文书
《我的长生果》教学反思
2016/02/20 职场文书