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内置函数bin() oct()等实现进制转换
Dec 30 Python
零基础学Python(一)Python环境安装
Aug 20 Python
Python中列表元素转为数字的方法分析
Jun 14 Python
Python的requests网络编程包使用教程
Jul 11 Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
Apr 12 Python
python3字符串操作总结
Jul 24 Python
Python提取PDF内容的方法(文本、图像、线条等)
Sep 25 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
python map比for循环快在哪
Sep 21 Python
python打包生成so文件的实现
Oct 30 Python
python常量折叠基础知识点讲解
Feb 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
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
PHP+MySQL实现的简单投票系统实例
2016/02/24 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
PHP数据库处理封装类实例
2016/12/24 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
js过滤HTML标签以及空格的思路及代码
2013/05/24 Javascript
Js放到HTML文件中的哪个位置有什么区别
2013/08/21 Javascript
js document.write()使用介绍
2014/02/21 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
Python学习入门之区块链详解
2017/07/25 Python
python爬虫 正则表达式解析
2019/09/28 Python
Python assert关键字原理及实例解析
2019/12/13 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
Java语言程序设计测试题选择题部分
2014/04/03 面试题
好人好事事迹材料
2014/02/12 职场文书
真诚的求职信
2014/07/04 职场文书
英文演讲稿开场白
2014/08/25 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
北大自主招生自荐信
2015/03/04 职场文书
竞聘书的秘诀
2019/04/02 职场文书