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
标签:None,缓存,version,cache,django,set,key
From: https://www.cnblogs.com/juelian/p/17665705.html