python - 将静态 Django 数据库加载到内存中

标签 python django sqlite orm memcached

我正在处理一组较大的数据(约 30000 条记录),我的 Django 应用程序需要定期检索这些数据。这些数据实际上并不经常更改(可能每月一次左右),并且所做的更改是批量完成的,因此我试图实现的数据库解决方案几乎是只读的。

这个数据集的总大小约为 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对缓存的记录将触发数据库查询。

如果您要根据条件查询这些记录,那么使用缓存将是一个好主意。

关于python - 将静态 Django 数据库加载到内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19310083/

相关文章:

python - nginx+uwsgi+django,uwsgi中好像有什么奇怪的缓存,帮帮我

django - 没有前端如何集成django-viewflow?

python - 根据条件将 NaN 值替换为其他列的平均值

python - 在 bulk_create Django 中捕获特定的失败记录

python - python中的"with"语句,为什么"as"段必须是单个对象

java - 如何将现有的 SQLite3 数据库导入 Room?

sqlite - MvvmCross异步SQLite

python - South 不会为现有应用程序生成或应用迁移,更改要迁移

django - 在 django admin 中设置 favicon

svn - 子剪辑错误 "svn: SQLite compiled for 3.8.6, but running with 3.8.5"