我正在创建一个 Django 应用程序,其中我需要在服务器启动时加载一些数据并将其保留在内存中以便快速访问。为了实现这一点,我使用 Django 的 AppConfig 类。代码看起来像这样:
from django.core.cache import cache
class myAppConfig(AppConfig):
name = 'myapp'
def ready(self):
data = myModel.objects.values('A','B','C')
cache.set('mykey', data)
问题是缓存中的数据在一段时间后就会过期。一种替代方法是增加 TIMEOUT 值。但我希望它始终存在于内存中。我可以使用其他配置或方法来实现此目的吗?
如果您正在使用Redis。它确实提供了持久的数据捕获。
查看https://redis.io/topics/persistence
您必须通过 Redis 配置进行设置。 有两种方法可以在重启后将数据保留在缓存中——这两种方法都会将数据以其他格式保存在硬盘中。我建议您根据自己的目的设置 AOF,因为它会记录每个写入操作。然而,这会造成更多的空间。
缓存超时参数可以设置为 None,这样它就永远不会过期。
cache.set('mykey', data, timeout=None)
https://docs.djangoproject.com/en/5.0/topics/cache/#cache-arguments