【发布时间】:2023-02-09 01:42:46
【问题描述】:
我想在 Django 中共享一些大型 python 对象。它们只是我想在内存中快速随机访问的大数据表。想想只读一个字典,比如磁盘上的 35M。所以,不是很大,也不是很小。我认为它们是不可变的。也就是说,在初始化时读入,永远不要更改它们。我愿意重新启动服务器以进行更改。
最好的、对 Django 最友好的方法是什么?
This question 跟我一样。 This answer 描述了如何使用 Django 的低级内存缓存。阅读the documentation,有一个in-memory cache是进程内和线程安全的。完美的。然而,只有可以腌制的对象。我不想让我的 35M python 对象被腌制,这看起来很尴尬。然后把它拿回来再解开它吗?根据要求?听起来很慢。
This blog post 提到了 django-lrucache-backend,它跳过了酸洗。然而,它最后一次更新是在 2 年前,并且还说不要将它用于“大数据表”(不知道为什么)。
建议?
编辑:我理解传统的答案,但我宁愿避免酸洗和 Redis。两个原因:1) 我宁愿避免编写一堆代码行 (pickling) 或维护另一个组件 (Redis),2) unpickle 大对象似乎更慢(是在每个请求上吗?)。
【问题讨论】: