django自带的cache缓存框架使用
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缓存框架使用的更多相关文章
- 【快学SpringBoot】快速上手好用方便的Spring Cache缓存框架
前言 缓存,在开发中是非常常用的.在高并发系统中,如果没有缓存,纯靠数据库来扛,那么数据库压力会非常大,搞不好还会出现宕机的情况.本篇文章,将会带大家学习Spring Cache缓存框架. 原创声明 ...
- MemCache缓存和C#自带的Cache缓存
1.MemCache: //初始化 static SockIOPool _pool; // 创建Memcached private static MemcachedClient Create(stri ...
- Spring Cache缓存框架
一.序言 Spring Cache是Spring体系下标准化缓存框架.Spring Cache有如下优势: 缓存品种多 支持缓存品种多,常见缓存Redis.EhCache.Caffeine均支持.它们 ...
- django自带的cache
cache语法 from django.core.cache import cache #存入内存 cache.set("aaa",123) #从内存中获取 cache.get(& ...
- django自带cache结合redis创建永久缓存
0916自我总结 django自带cache结合redis创建永久缓存 1.redis库 1.安装redis与可视化操作工具 1.安装redis https://www.runoob.com/redi ...
- Django—— 缓存框架
译者注:1.无用的,吹嘘的说辞不翻译:2.意译,很多地方不准确. 动态网站最为重要的一点就是好,网页是动态的.每一次用户请求页面,网站就要进行各种计算——从数据库查询,到render模板,到各种逻辑运 ...
- Django学习之十二:Cache 缓存组件
目录 Django Cache 缓存组件 缓存逻辑伪代码 配置缓存源 可配置参数说明 01. Django的默认缓存 02. 基于Redis的django-redis 03. 自定义cache 04. ...
- 重新认识下JVM级别的本地缓存框架Guava Cache——优秀从何而来
大家好,又见面了. 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面.如果感兴趣,欢迎关注以获取后续更新. 不知不觉,这已经是<深入理解缓存 ...
- Django cache (缓存)
五种配置 1.开发调试 # 此为开始调试用,实际内部不做任何操作 # 配置: CACHES = { 'default': { 'BACKEND': 'django.core.cache.backend ...
- 重新认识下JVM级别的本地缓存框架Guava Cache(2)——深入解读其容量限制与数据淘汰策略
大家好,又见面了. 本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面.如果感兴趣,欢迎关注以获取后续更新. 通过<重新认识下JVM级别的本地 ...
随机推荐
- 选择合适的方法进行API接口调试
随着互联网的快速发展,API(Application Programming Interface)接口在软件开发中扮演着重要的角色.调试API接口是确保系统正常运行的关键步骤之一.本文将介绍如何选择适 ...
- 快手商品详情API接口如何使用
使用快手开的API接口获取商品详情,可按照以下步骤进行: 1.注册账号并创建应用 注册开发者账号,并在账号后台中创建一个应用,获得AppKey和AppSecret等信息.这些信息是使用API接口访问快 ...
- 完全可复制、经过验证的 Go 工具链
原文在这里. 由 Russ Cox 发布于 2023年8月28日 开源软件的一个关键优势是任何人都可以阅读源代码并检查其功能.然而,大多数软件,甚至是开源软件,都以编译后的二进制形式下载,这种形式更难 ...
- Spring Boot中自动装配机制的原理
SpringBoot中自动装配机制的原理 1.自动装配,简单来说就是自动把第三方组件的Bean装载到Spring IOC容器里面,不需要开发人员再去写Bean的装配配置, 2.在Spring Boot ...
- 聊聊数据库事务内嵌TCP连接
最近再看项目代码,发现很多的service里面,喜欢在事务内部再去调用HTTP请求,简单分析下此种方式的利弊与解决策略. 概述 在数据库内部嵌套TCP连接(一般是HTTP调用或是RPC远程调用). @ ...
- 再聊Java Stream的一些实战技能与注意点
大家好,又见面了. 在此前我的文章中,曾分2篇详细探讨了下JAVA中Stream流的相关操作,2篇文章收获了累计 10w+阅读.2k+点赞以及 5k+收藏的记录.能够得到众多小伙伴的认可,是技术分享过 ...
- zxy 简单 dp 大讲堂
讲课讲得非常清楚啊,我绝赞膜拜.节奏可以,思路清晰,解法自然,为讲师点赞. 第一个题是 loj3282 / joisc2020 - Treatment Project.原问题由 \(\left(S, ...
- Springboot简单功能示例-6 使用加密数据源并配置日志
springboot-sample 介绍 springboot简单示例 跳转到发行版 查看发行版说明 软件架构(当前发行版使用) springboot hutool-all 非常好的常用java工具库 ...
- 单元测验3:亲密关系mooc
单元测验3:亲密关系 查看帮助 返回 1 单选(2分) 在亲密关系中,有关权力的表述,以下说法不太准确的的是? A. 对关系付出越多,权力越大. B. 大部分人会倾向认为,在恋爱关系中,男女应该拥 ...
- 【sqli-labs】学习--待续
预备知识: 数字型注入: 这种sql语句中处理的是整型,不需要使用单引号来闭合变量的值. 首先输入id=1',此时因为不是整型,sql语句会执行出错,抛出异常. 然后输入id=1 and 1=1,此时 ...