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中metaclass元类的创建与使用
Jun 30 Python
python 捕获 shell/bash 脚本的输出结果实例
Jan 04 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
python生成以及打开json、csv和txt文件的实例
Nov 16 Python
python 基于dlib库的人脸检测的实现
Nov 08 Python
分享PyCharm的几个使用技巧
Nov 10 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
May 15 Python
python 6种方法实现单例模式
Dec 15 Python
详解Python描述符的工作原理
Jun 11 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 Python
分享7个 Python 实战项目练习
Mar 03 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
星际争霸任务指南——神族
2020/03/04 星际争霸
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
php命令行模式代码实例详解
2021/02/26 PHP
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
浅谈JavaScript实现面向对象中的类
2014/12/09 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
2015/10/23 Javascript
angularjs表格分页功能详解
2016/01/21 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
Vue 401配合Vuex防止多次弹框的案例
2020/11/11 Javascript
Python数组定义方法
2016/04/13 Python
Django卸载之后重新安装的方法
2017/03/15 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
python实现可变变量名方法详解
2019/07/01 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
实习单位推荐信范文
2013/11/27 职场文书
服务员自我评价
2014/01/25 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏