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. Golang日志新选择:slog

    go1.21中,slog这一被Go语言团队精心设计的结构化日志包正式落地,本文将带领读者上手slog,体会其与传统log的差异. WHY 在日志处理上,我们从前使用的log包缺乏结构化的输出,导致信息 ...

  2. 解读Redis常见命令

    Redis数据结构介绍 Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样: 贴心小建议:命令不要死记,学会查询就好啦 Redis为了方便我们学习, ...

  3. Linux Ubuntu 安装Qt【安装完可以直接运行】

    1.安装 Qt: 第一步:到官网http://download.qt.io/archive/qt/下载 Qt 安装包,此处本人安装的是 qt-opensource-linux-x64-5.7.0.ru ...

  4. 【译】ASP.NET Core在 .NET Core 3.1 Preview 1中的更新

    .NET Core 3.1 Preview 1现在可用.此版本主要侧重于错误修复,但同时也包含一些新功能. 这是此版本的ASP.NET Core的新增功能: 对Razor components的部分类 ...

  5. Redis系列之——持久化

    一 持久化的作用 1.1 什么是持久化 redis的所有数据保存在内存中,对数据的更新将异步的保存到硬盘上 1.2 持久化的实现方式 快照:某时某刻数据的一个完成备份, -mysql的Dump -re ...

  6. Convolutional neural network (CNN)–extreme learning machine (ELM)

    1. 介绍 论文:(2020)Neural networks for facial age estimation: a survey on recent advances. 地址: http://li ...

  7. Java-全网最详细数据结构

    数构&算法:数据结构 数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率.数据结构往 ...

  8. AI图形算法之一:液位计识别

    AI人工智能的主要应用之一就是图形化处理和识别,之前写了两篇,分别是: AI图形算法的应用之一:通过图片模板对比发现油田漏油 AI图形算法的应用之一:仪表识别 经过几个晚上的辛苦,液位计识别也测试成功 ...

  9. [最优化DP]决策单调性

    决策单调性的概念&证明工具: 决策单调性,是在最优化dp中的可能出现的一种性质,利用它我们可以降低转移的复杂度. 首先dp中会有转移,每个状态都由若干个状态转移而来,最优化dp比较特殊,只能由 ...

  10. 自然数的拆分问题(lgP2404)

    dfs.又调了一个小时,窝果然菜 需要传递的变量分别为目前搜索的数字:目前所有选中数字的和:目前所选数字个数. 见注释. #include<bits/stdc++.h> using nam ...