https://docs.djangoproject.com/zh-hans/4.2/topics/cache/#top

主要步骤官网也写得很清楚了,包含怎么区使用。

这里就展示一些配置django-redis来使用

# settings.py
CACHES = {
'default': { # 默认,预留
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://192.168.2.6:6380/0', # 0是表示使用第1个库,redis默认一共16个库(0-15),记得不。。
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
},
...
}

操作缓存

https://docs.djangoproject.com/zh-hans/4.2/topics/cache/#the-low-level-cache-api

from django.core.cache import cache, caches

cache 等同于 caches['default']
如果你配置其他名字的caches,则使用caches['你配置的名字']来获取缓存后端实例 # 返回的类型就是你在settings.py中设置的BACKEND,比如这里肯定是django_redis.cache.RedisCache
print(type(caches['default']))
#cc: RedisCache = caches

cache.set(key, value, timeout=DEFAULT_TIMEOUT, version=None)

添加缓存。

key 是一个字符串,value 可以任何 picklable 形式的 Python 对象。【value会pickle之后以string存储。(redis)】

timeout 参数是可选的,默认为 CACHES 中相应后端的 timeout 参数。它是值存在缓存里的秒数。timeout 设置为 None 时将永久缓存。

timeout 为0将不缓存值。

>>> cache.set('shengfen', 'hello, world!', 30)

我们查看redis,会发现如下:

我们发现key的名字是:1:你保存的key名,什么含义呢?

实际上存储的格式是:<缓存key前缀>:<version版本>:<你保存的key名>

**缓存key前缀:**通过settings.py中添加KEY_PREFIX来控制,主要作用是防止和系统中其他用到相同cache时候key会冲突。

**version版本:**看官网吧→[https://docs.djangoproject.com/zh-hans/4.2/topics/cache/#cache-versioning](https://docs.djangoproject.com/zh-hans/4.2/topics/cache/#cache-versioning)

cache.get(key, default=None, version=None)

获取缓存,如果缓存中不存在该对象, cache.get() 返回 None

>>> cache.get('my_key')
'hello, world!'

cache.add(key, value, timeout=DEFAULT_TIMEOUT, version=None)

add和set类型,不同点是add只在key不存在的时候才进行添加。

cache.get_or_set(key, default, timeout=DEFAULT_TIMEOUT, version=None)

get不到就直接set,没啥需要特别解释的。

cache.get_many(keys, version=None)

一次性获取多个key,并返回一个字典。

>>> cache.set("a", 1)
>>> cache.set("b", 2)
>>> cache.set("c", 3)
>>> cache.get_many(["a", "b", "c"])
{'a': 1, 'b': 2, 'c': 3}

cache.set_many(dict, timeout)

一次性设置多个key-val,传递一个dict。

>>> cache.set_many({"a": 1, "b": 2, "c": 3})
>>> cache.get_many(["a", "b", "c"])
{'a': 1, 'b': 2, 'c': 3}

cache.delete(key, version=None)

删除指定的key

cache.clear()

删除所有缓存

cache.touch(key, timeout=DEFAULT_TIMEOUT, version=None)

设置key的过期时间。如果键被成功 touch(),将返回 True,否则返回 False

cache.incr(key, delta=1, version=None) cache.decr(key, delta=1, version=None)

自增或者自减。

>>> cache.set("num", 1)
>>> cache.incr("num")
2
>>> cache.incr("num", 10)
12
>>> cache.decr("num")
11
>>> cache.decr("num", 5)
6

django自带的cache缓存框架使用的更多相关文章

  1. 【快学SpringBoot】快速上手好用方便的Spring Cache缓存框架

    前言 缓存,在开发中是非常常用的.在高并发系统中,如果没有缓存,纯靠数据库来扛,那么数据库压力会非常大,搞不好还会出现宕机的情况.本篇文章,将会带大家学习Spring Cache缓存框架. 原创声明 ...

  2. MemCache缓存和C#自带的Cache缓存

    1.MemCache: //初始化 static SockIOPool _pool; // 创建Memcached private static MemcachedClient Create(stri ...

  3. Spring Cache缓存框架

    一.序言 Spring Cache是Spring体系下标准化缓存框架.Spring Cache有如下优势: 缓存品种多 支持缓存品种多,常见缓存Redis.EhCache.Caffeine均支持.它们 ...

  4. django自带的cache

    cache语法 from django.core.cache import cache #存入内存 cache.set("aaa",123) #从内存中获取 cache.get(& ...

  5. django自带cache结合redis创建永久缓存

    0916自我总结 django自带cache结合redis创建永久缓存 1.redis库 1.安装redis与可视化操作工具 1.安装redis https://www.runoob.com/redi ...

  6. Django—— 缓存框架

    译者注:1.无用的,吹嘘的说辞不翻译:2.意译,很多地方不准确. 动态网站最为重要的一点就是好,网页是动态的.每一次用户请求页面,网站就要进行各种计算——从数据库查询,到render模板,到各种逻辑运 ...

  7. Django学习之十二:Cache 缓存组件

    目录 Django Cache 缓存组件 缓存逻辑伪代码 配置缓存源 可配置参数说明 01. Django的默认缓存 02. 基于Redis的django-redis 03. 自定义cache 04. ...

  8. 重新认识下JVM级别的本地缓存框架Guava Cache——优秀从何而来

    大家好,又见面了. 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面.如果感兴趣,欢迎关注以获取后续更新. 不知不觉,这已经是<深入理解缓存 ...

  9. Django cache (缓存)

    五种配置 1.开发调试 # 此为开始调试用,实际内部不做任何操作 # 配置: CACHES = { 'default': { 'BACKEND': 'django.core.cache.backend ...

  10. 重新认识下JVM级别的本地缓存框架Guava Cache(2)——深入解读其容量限制与数据淘汰策略

    大家好,又见面了. 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面.如果感兴趣,欢迎关注以获取后续更新. 通过<重新认识下JVM级别的本地 ...

随机推荐

  1. 《Python魔法大冒险》 001 序章:少年小鱼的不平凡一天

    在一个普通的城市里,生活着一个名叫小鱼的少年.他是一名初中生,但在班级里,他的学习成绩总是垫底.同学们经常取笑他,有时甚至戏称他为"倒数王". 放学后,小鱼一个人走在回家的路上,他 ...

  2. 扩展ABP的Webhook功能,推送数据到第三方接口(企业微信群、钉钉群等)

    前言 在上一篇文章[基于ASP.NET ZERO,开发SaaS版供应链管理系统]中有提到对Webhook功能的扩展改造,本文详细介绍一下具体过程. Webhook功能操作说明,请参见此文档链接:Web ...

  3. 使用docker搭建seafile服务器

    工作需要在单位和家里的不同电脑上同步指定文件夹及其内容.对比了一些解决方案,最终还是选择熟悉的seafile来做. 需要按照官方文档进行seafile的安装,选择官方推荐的docker方式快速部署. ...

  4. Azure Data Factory(八)数据集验证之服务主体(Service Principal)

    一,引言 如下图所示,今天我们接着上一篇内容,继续讲解 Azure Data Factory 中的数据集连接服务的认证方式:Service Principal 关于 Service Principal ...

  5. 解决 wg-quick 在 Mac 上 bash 3 无法运行的问题

    问题原因 我可以理解,开发人员不想使用苹果使用的旧bash v3.但从用户的帖子来看,安装一个较新的bash并不那么好 所以我看了wireguard的wg-quick.需要支持的唯一变化,两个bash ...

  6. 「atcoder - 214G」Three Permutations

    la traduction. link. 如果我们对于每一个 \(k\in[0,n]\) 找到所有满足存在 \(k\) 个 \(i\) 使得 \(r_i=p_i\) 或 \(r_i=q_i\) 条件的 ...

  7. TDengine 用户案例合集 | 智能环保项目的时序数据处理难点与优化实践

    智能环保系统通常涉及大量的传感器和监测设备,以收集环境数据并对其进行分析和处理,这些数据通常是时序数据,即在一段时间内按时间顺序生成的数据,规模庞大且要求快速准确地进行分析和处理.也因此时序数据处理是 ...

  8. vue指令 v-if

    1.字符'0'也显示为真 <div v-if="zeroStr">明月几时有,把酒问青天.</div> data() { zeroStr: '0' } 运行 ...

  9. 手撕Vue-编译指令数据

    经过上一篇的分析,完成了查找指令和模板的功能,接下来就是编译指令的数据了. 所以本章节主要处理的方法则是 buildElement 方法,我们先分析一下我们所拿到的数据在进行编码,这样会更加清晰一些. ...

  10. We Need More Bosses 题解

    We Need More Bosses 题目大意 给定一张图,找到两个点,使得这两个点之间的所有路径必须经过的边最多. 思路分析 我们先来思考一下如果已知两个点,怎么求两个点之间必须经过的边的数量. ...