缓存的定义
定义:缓存是一类可以更快的读取数据的介质统称,也指其他可以加快数据读取的存储方式。一般用来存储临时数据,常用的介质是读取速度更快的内存
缓存配置
将缓存的数据存储在数据库中
说明: 把一次查询负责查询的结果直接存储到表里,例如多个条件的过滤查询结果,可以避免重复进行复杂查询,提升效率;通常会用redis来代替。
CACHES = {
‘default’:{
‘BACKEND’:‘django.core.cache.backends.db.DatabaseCache’,
‘LOCATION’:‘my_cache_table’,
‘TIMEOUT’:‘300’, # 缓存保存时间 单位秒 默认值为300
‘OPTIONS’:{
‘MAX_ENTRIES’:300, #缓存最大数据条数
‘CULL_FREQUENCE’:2, # 缓存条数达到最大值
}
}
}
数据库缓存到服务器内存中
CACHES = {'default':{'BACKEND':'django.core.cache.backends.db.LocMemCache','LOCATION':'unqiue-snowfiake'}
}
缓存数据到本地文件中
CACHES = {
‘default’:{
‘BACKEND’:‘django.core.cache.backends.filebased.FileBasedCache’,
‘LOCATION’:’/tmp/django_cache’
}
}
示例
CACHES = {'default':{'BACKEND':'django.core.cache.backends.db.DatabaseCache','LOCATION':'my_cache_table','TIMEOUT':'300', 'OPTIONS':{'MAX_ENTRIES':300, 'CULL_FREQUENCE':2, }}
}
[root@sdns tedu_note]
[root@sdns tedu_note]
Operations to perform:Apply all migrations: admin, auth, contenttypes, note, sessions, user
Running migrations:No migrations to apply.
mysql> desc my_cache_table;
+-----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| cache_key | varchar(255) | NO | PRI | NULL | |
| value | longtext | NO | | NULL | |
| expires | datetime(6) | NO | MUL | NULL | |
+-----------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
整体缓存策略
from django.views.decorators.cache import cache_page
@cache_page(30)
def fun_view(request):....
或者在路由中
from django.views.decorators.cache import cache_page
urlpatterns = [path('cache/',cache_page(60)(cache_view)),
import time
from django.http import HttpResponse
from django.views.decorators.cache import cache_page
@cache_page(15)
def test_cache(request):t=time.time()return HttpResponse('t is %s'%(t))
局部缓存
缓存api的使用
先引入cache对象
方式1: 使用caches[‘CACHE配置KEY’] 导入具体对象
from django.core.cache import caches
方式2 : from django.core.cache import cache 相当于直接引入CACHES配置项中的’DEFAULT’项
相关命令
-
cache.set(key,value,timeout) 存储缓存
key: 缓存key,字符串类型
value : Python对象
timeout: 缓存时间(s)
返回值: None
-
cache.get(key) 获取缓存
key: 缓存key,字符串类型
返回值: 为key的具体指,如果没有数据,则返回None
-
cache.add(key,value) 存储缓存,只有在key不存在时生效
返回值: True 或者 False
-
cache.get_or_set(key,value,timeout) 如果未获取到数据,则执行set操作
返回值:value
-
cache.set_many(dict,timeout) 批量存储缓存
dict: key 和 value的字典
timeout: 存储时间(s)
返回值: 插入不成功的key的数组
-
cache.get_many(key_list) 批量获取缓存数据
key_list : 包含key的数组
返回值: 去到key和value的字典
-
cache.delete(key) 删除指定key的缓存数据
返回值:None
-
cache.delete_many(key_list) 批量删除
返回值:None
示例
>>> from django.core.cache import cache
>>> cache.set('uuname','hulk',20)
>>> cache.get('uuname')
'hulk'