我有以下想法:假设我们有一个使用django编写的webapp,它可以模拟某种公告板.这个董事会有许多线程,但其中一些每小时获得最多的帖子/观点.每个用户的线程页面看起来有点不同,因此您无法将呈现的页面整体缓存,并且仅缓存呈现页面的某些部分也不是一个选项.
我的想法是:我在内存中创建一个线程的对象结构(每个帖子和显示它所需的其他数据).如果发布了新消息,则更新结构并且每个X帖子(或每Y分钟,无论先发生什么)都将新消息写回数据库.如果应用程序崩溃,一些帖子会丢失,但这绝对没问题(对于用户和管理员).
问题:我可以在没有序列化的情况下在内存存储中创建这样的持久性(所以没有serialize-> memcached)?据我所知,WSGI应用程序(如Django)在连续过程中运行而不会在请求之间关闭,因此理论上应该是可能的.我可以使用任何API吗?如果没有:任何一点看?
/ edit1:我知道"持久性"通常具有不同的含义,但在这种情况下,我严格意味着"在请求之间".
在生产WSGI环境中,您可能会有多个工作进程同时处理请求.这些工作进程将不时被回收,这意味着本地内存对象将丢失.
但是如果你真的需要这个(并确保你这样做),我建议你研究Django的缓存框架,检查本地内存缓存.另外,看看会话.
但即使本地内存缓存也使用序列化(with pickle
).通过实现自定义缓存后端,可以轻松实现本地内存缓存而无需序列化(请参阅文档).您可以使用代码locmem.py
作为起点来创建没有序列化的缓存.
但我怀疑你在这里做了一些过早的优化?