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的Django框架完成视频处理任务的教程
Apr 02 Python
python实现用户登陆邮件通知的方法
Jul 09 Python
Python 爬虫多线程详解及实例代码
Oct 08 Python
PyQt5每天必学之单行文本框
Apr 19 Python
Python中pandas模块DataFrame创建方法示例
Jun 20 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
Window环境下Scrapy开发环境搭建
Nov 18 Python
python实现停车管理系统
Nov 30 Python
mac系统下Redis安装和使用步骤详解
Jul 09 Python
Django中使用CORS实现跨域请求过程解析
Aug 05 Python
Python完全识别验证码自动登录实例详解
Nov 24 Python
如何快速理解python的垃圾回收机制
Sep 01 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
动态网站web开发 PHP、ASP还是ASP.NET
2006/10/09 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
2011/11/10 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
php设计模式之单例模式代码
2016/06/11 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
利用jQuery的deferred对象实现异步按顺序加载JS文件
2013/03/17 Javascript
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
2013/12/17 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
js跨域请求的5中解决方式
2015/07/02 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
js实现下一页页码效果
2017/03/07 Javascript
AngularJS中下拉框的高级用法示例
2017/10/11 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
python中stdout输出不缓存的设置方法
2014/05/29 Python
Python实现简单截取中文字符串的方法
2015/06/15 Python
Python打包可执行文件的方法详解
2016/09/19 Python
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
python远程邮件控制电脑升级版
2019/05/23 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
哪些情况下不应该使用索引
2015/07/20 面试题
如何整合JQuery和Prototype
2014/01/31 面试题
小学生班会演讲稿
2014/01/09 职场文书
实习单位接收函模板
2014/01/10 职场文书
模具专业毕业推荐信
2014/03/08 职场文书
一年级小学生评语
2014/04/22 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js