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中join和split用法实例
Apr 14 Python
详解Python函数作用域的LEGB顺序
May 14 Python
Python实现模拟分割大文件及多线程处理的方法
Oct 10 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 Python
使用Pyinstaller的最新踩坑实战记录
Nov 08 Python
如何优雅地处理Django中的favicon.ico图标详解
Jul 05 Python
pandas 转换成行列表进行读取与Nan处理的方法
Oct 30 Python
Python设计模式之模板方法模式实例详解
Jan 17 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
python 爬取英雄联盟皮肤并下载的示例
Dec 04 Python
用OpenCV进行年龄和性别检测的实现示例
Jan 29 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调用三种数据库的方法(1)
2006/10/09 PHP
解密ThinkPHP3.1.2版本之模板继承
2014/06/19 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
javascript创建和存储cookie示例
2014/01/07 Javascript
js charAt的使用示例
2014/02/18 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
JavaScript 基本概念
2015/01/20 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
2015/11/30 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
JavaScript 判断对象中是否有某属性的常用方法
2018/06/14 Javascript
原生JS实现自定义下拉单选选择框功能
2018/10/12 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
Python中property属性实例解析
2018/02/10 Python
python分数表示方式和写法
2019/06/26 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
Python tkinter模版代码实例
2020/02/05 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
2020/02/26 Python
Python devel安装失败问题解决方案
2020/06/09 Python
管理科学大学生求职信
2013/11/13 职场文书
实习鉴定评语
2014/01/19 职场文书
交通事故和解协议书
2015/01/27 职场文书
前台岗位职责范本
2015/04/16 职场文书
《打电话》教学反思
2016/02/22 职场文书
对Keras自带Loss Function的深入研究
2021/05/25 Python