Python-Django使用MemcachedCache缓存
最近工作中使用到缓存,简单记录之...
关于django的几种缓存方式,就不在做介绍了,网上一搜一大把:1.8.2官方文档, Django 缓存,Python菜鸟之路:django缓存
学习了之后,选择的是,MemcachedCache,此缓存使用python-memcached模块连接memcache。
关于Python-memcached的安装以及介绍就不在做介绍,可查看文章:python3之memcached,python---Memcached
1)在Django的settings中设置缓存
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': ,'127.0.0.1:11211', # 可以为远程地址和端口,可以设置多个ip
        'TIMEOUT': 86400,  # 1 day,设置成0缓存将失效
        'OPTIONS': {
            'MAX_ENTRIES': 1000, # 高速缓存允许的最大条目数,超出这个数则旧值将被删除. 这个参数默认是300.
            'CULL_FREQUENCY': 3, # 当达到MAX_ENTRIES 的时候,被删除的条目比率。 实际比率是 1 / CULL_FREQUENCY,默认是3
        }
    }
}
2)业务代码:
#coding=utf-8
def key_hash(value):
    """hash缓存key,防止过长"""
    import hashlib
    return '%s' % hashlib.md5(value).hexdigest()
def cache(num1, num2):
    """
    :param num1: 获取或者设置cache的标识
    :param num2:获取或者设置cache的标识
    :return: 缓存dict
    """
    from django.core.cache import cache
    import logging
    log = logging.getLogger(__name__)  # 日志
    # 去重并排序,增加缓存命中率
    cache_key = 'num1={num1}&num2={num2}'.format(num1=num1, num2=num2)
    cache_key = key_hash(cache_key)
# in cache, return cache
    if cache.get(cache_key):
        log.debug('cache %s hitting ' % cache_key)
        return cache.get(cache_key)
# not in cache, get result and set cache
    ret = None
    # TODO do something get result
    ret = 'something'
    cache.set(cache_key, ret, 60 * 60 * 24)  # 一天过期
    return ret
--------------------- 
作者:微光刺眼丶 
来源:CSDN 
原文:https://blog.csdn.net/weixin_40475396/article/details/80351578?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!
Python-Django使用MemcachedCache缓存的更多相关文章
- 【python】-- Django  中间件、缓存、信号
		Django 中间件.缓存.信号 一. Django 中间件 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的 ... 
- Django实现内容缓存
		1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会 ... 
- 第三百一十七节,Django框架,缓存
		第三百一十七节,Django框架,缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返 ... 
- Django组件补充(缓存,信号,序列化)
		Django组件补充(缓存,信号,序列化) Django的缓存机制 1.1 缓存介绍 1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑 ... 
- Django 中的缓存问题
		Django 中的缓存问题 简单介绍  在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面.  当一个网站的用户访问量很大的 ... 
- Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)
		一.Django中的缓存: 前戏: 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一 ... 
- Django学习之缓存和信号
		Django学习之缓存和信号 一 缓存 由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views ... 
- Django高级之-缓存
		一 缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消 ... 
- python  Django教程  之 安装、基本命令、视图与网站
		python Django教程 之 安装.基本命令.视图与网站 一.简介 Django 中提供了开发网站经常用到的模块,常见的代码都为你写好了,通过减少重复的代码,Django 使你能够专注于 w ... 
- python Django知识点总结
		python Django知识点总结 一.Django创建项目: CMD 终端:Django_admin startproject sitename(文件名) 其他常用命令: 其他常用命令: 通过类创 ... 
随机推荐
- JDBC 数据库连接       Java操作数据库   jdbc快速入门
			JDBC基本概念 Java DataBase Connectivity 数据库连接 java操作数据库 本质上(sun公司的程序员)定义的一套操作关系型数据库的规则 既接口 更新内容之前 代码 pa ... 
- 从Java看数据结构之——树和他的操作集
			写在前面 树这种数据结构在计算机世界中有广泛的应用,比如操作系统中用到了红黑树,数据库用到了B+树,编译器中的语法树,内存管理用到了堆(本质上也是树),信息论中的哈夫曼编码等等等等.而树的实现和他的操 ... 
- Unity3d插件]EasyTouch简单使用方法
			EasyTouch使用 EasyTouch 文件夹[-] 一.效果图 二.操作步骤 1.官方文档上的步骤 2.翻译一下以上的步骤 3.依据官方的这些提示.自己来做一个属于自己的人物遥感控制 对于移动平 ... 
- linux 进程间通信之 消息队列
			消息队列就是一个消息的链表. 能够把消息看作一个记录,具有特定的格式以及特定的优先级.对消息队列有写权限的进程能够向中依照一定的规则加入新消息.有读权限的进程则能够读走消息. 读走就没有了.消息队列是 ... 
- java开始到熟悉66-69
			本次内容:DateFormat类 1.DateFormat类 package array; /** * 时间和字符串之间的转化 */ import java.text.DateFormat; impo ... 
- php闭包实例
			php闭包函数,一个典型的实例 function getMoney() { $rmb = 1; $dollar = 6; $func = function($dollar) use (&$rm ... 
- mybatis 动态curd
			xml <select id="selectByCondition" parameterType="com.oracle.pojo.Student" re ... 
- 嵌入式驱动开发之2440/2410---uboot 移植
			http://blog.chinaunix.net/uid-20620288-id-3058904.html 
- [Selenium]通过Selenium实现在当前浏览器窗口点击一个图标之后,弹出另外一个窗口,关闭这个窗口,再回到原来的窗口进行操作
			public void clickReportIcon(){ String initialWindowHandle = driver.getWindowHandle(); //保存原始的浏览器窗口 p ... 
- LeetCode(27)题解:Remove Element
			https://leetcode.com/problems/remove-element/ Given an array and a value, remove all instances of th ... 
