Python Django数据库缓存超时-使后端删除行
我不确定Django数据库缓存对过期条目做了什么,但它们似乎仍保留在数据库中 我希望Django在它们过期后删除它们,因为它们的大小非常大,并且可以有无限数量的不同密钥Python Django数据库缓存超时-使后端删除行,python,django,caching,django-database,django-cache,Python,Django,Caching,Django Database,Django Cache,我不确定Django数据库缓存对过期条目做了什么,但它们似乎仍保留在数据库中 我希望Django在它们过期后删除它们,因为它们的大小非常大,并且可以有无限数量的不同密钥 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', 'LOCATION': 'cache_table', 'TIMEOUT': 60 * 20, } }
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'cache_table',
'TIMEOUT': 60 * 20,
}
}
我对过滤后的对象列表使用cache
,该过滤器包含数字和字符字段
有可能吗?无法在过期条目过期时清除它们。这是您可能不想在生产中使用数据库缓存的众多原因之一 如果可能,您应该切换到不同的缓存后端(我更喜欢Redis)。如果不能,您还有其他一些选择:
MAX\u条目
和/或CULL\u频率
,以限制缓存的总体大小DELETE from cache\u table WHERE expires
(我还没有测试过,但我认为应该可以)值得注意的是,虽然某些后台进程通常不会删除这些行,
timeout
参数确实起作用。它仅在读取缓存时工作。我不确定行是否在过期时被删除,但如果您的客户端尝试get()
过期缓存项,它将获得None
。我刚刚更新了一些信息。