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字符串替换的2种方法
Nov 30 Python
python用reduce和map把字符串转为数字的方法
Dec 19 Python
小米5s微信跳一跳小程序python源码
Jan 08 Python
Python matplotlib绘图可视化知识点整理(小结)
Mar 16 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
Oct 22 Python
pymongo中聚合查询的使用方法
Mar 22 Python
python 字典操作提取key,value的方法
Jun 26 Python
python中open函数的基本用法示例
Sep 07 Python
推荐8款常用的Python GUI图形界面开发框架
Feb 23 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
python 基于DDT实现数据驱动测试
Feb 18 Python
Pycharm 如何设置HTML文件自动补全代码或标签
May 21 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
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
php+mysql分页代码详解
2008/03/27 PHP
PHP中用hash实现的数组
2011/07/17 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
2016/03/19 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
Bootstrap组合上、下拉框简单实现代码
2017/03/06 Javascript
jQuery正则验证注册页面经典实例
2017/06/10 jQuery
详解React中合并单元格的正确写法
2019/01/08 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
python 计算两个列表的相关系数的实现
2019/08/29 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
匡威爱尔兰官网:Converse爱尔兰
2019/06/09 全球购物
软件测试工程师结构化面试题库
2016/11/23 面试题
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
委托公证书格式
2015/01/26 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
2019暑假学生安全口号
2019/06/27 职场文书
MySQL 查询速度慢的原因
2021/05/25 MySQL