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素数检测实例分析
Jun 15 Python
非递归的输出1-N的全排列实例(推荐)
Apr 11 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
Python实现动态添加属性和方法操作示例
Jul 25 Python
python实现自动登录后台管理系统
Oct 18 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
Oct 22 Python
python爬虫 urllib模块url编码处理详解
Aug 20 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
Sep 10 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
Python实现单例模式的5种方法
Jun 15 Python
请求模块urllib之PYTHON爬虫的基本使用
Apr 08 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
JS实现php的伪分页
2008/05/25 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
jQuery 操作XML入门
2008/12/25 Javascript
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
js+html+css实现鼠标移动div实例
2013/01/30 Javascript
在HTML中插入JavaScript代码的示例
2015/06/03 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
angularjs项目的页面跳转如何实现(5种方法)
2017/05/25 Javascript
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
Vue数据监听方法watch的使用
2018/03/28 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
python实现识别相似图片小结
2016/02/22 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
Python玩转加密的技巧【推荐】
2019/05/13 Python
pycharm 安装JPype的教程
2019/08/08 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
Python 如何在字符串中插入变量
2020/08/01 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
巴基斯坦购物网站:Goto
2019/03/11 全球购物
小学语文教学反思
2014/02/10 职场文书
个人求职自荐信范文
2014/06/20 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
企业安全隐患排查治理制度
2015/08/05 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android