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中使用语句导入模块或包的机制研究
Mar 30 Python
python通过自定义isnumber函数判断字符串是否为数字的方法
Apr 23 Python
详解Python中映射类型(字典)操作符的概念和使用
Aug 19 Python
使用Python & Flask 实现RESTful Web API的实例
Sep 19 Python
mac系统下Redis安装和使用步骤详解
Jul 09 Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 Python
pandas 空数据处理方法详解
Nov 02 Python
Tensorflow实现部分参数梯度更新操作
Jan 23 Python
Python绘图实现台风路径可视化代码实例
Oct 23 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
Nov 30 Python
教你怎么用python selenium实现自动化测试
May 27 Python
如何利用python实现Simhash算法
Jun 28 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 strtr() 函数使用说明
2008/11/21 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
学习php中的正则表达式
2014/08/17 PHP
ThinkPHP入口文件设置及相关注意事项分析
2014/12/05 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
vue3.0+vue-router+element-plus初实践
2020/12/02 Vue.js
JavaScript WeakMap使用详解
2021/02/05 Javascript
[02:08]DOTA2英雄基础教程 马格纳斯
2014/01/17 DOTA
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
Django使用paginator插件实现翻页功能的实例
2018/10/24 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
高中毕业生的个人自我评价
2014/02/21 职场文书
交通事故调解协议书
2014/04/16 职场文书
中学生运动会口号
2014/06/07 职场文书
2014年移动公司工作总结
2014/12/08 职场文书
酒会开场白大全
2015/06/01 职场文书
《失物招领》教学反思
2016/02/20 职场文书
实习报告范文
2019/07/30 职场文书
5道关于python基础 while循环练习题
2021/11/27 Python
oracle数据库去除重复数据
2022/05/20 Oracle