我正在使用我的 Django 应用程序需要定期检索的数据集(约 30000 条记录)。这些数据实际上并不经常更改(可能每月一次左右),并且所做的更改是批量完成的,因此我试图获得的数据库解决方案几乎是只读的。
这个数据集的总大小大约是 20mb,我的第一个想法是我可以将它加载到内存中(可能作为对象上的单例)并以这种方式非常快速地访问它,尽管我想知道是否有通过避免磁盘 I/O 来减少获取时间的其他更有效的方法。 memcached 会是最好的解决方案吗?或者将它加载到内存中的 SQLite 数据库中会更好吗?或者在应用程序启动时将其作为内存变量加载?
请您参考如下方法:
我认为最简单的解决方案是将所有对象加载到内存中
cached_records = Record.objects.all()
list(cached_records) # by using list() we force Django load all data into memory
然后你就可以在你的应用中自由使用这个cached_records,你也可以使用像filter等QuerySet方法。但是filter在缓存记录上将触发数据库查询。
如果您要根据条件查询这些记录,使用缓存是个好主意。
