2

我需要序列化需要高性能的数据。分离的线程每秒都会访问它,并且必须将数据加载到内存中。将有大约 1000 - 10000 个关于用户会话(id、sessid、登录日期)的类似字典的条目。由于登录时间有一定的时间,一些数据会经常更新。

这些数据将在 python 服务器和 Django 应用程序之间共享。我认为使用 pickle 或其更快的版本 cPickle。我还找到了marshal

最好的方法是什么?cPickle 是否足够高效?或者也许是元帅?

编辑:非常重要的是访问时间。这将是一个实时 websocket 服务器,所以我需要非常低的延迟。每秒访问一次 cPickle 数据或连接到 Redis 之类的数据库是否更快?

4

3 回答 3

4

更好的方法可能是使用一些内存缓存 - memcached,如果您的需求很简单 - 或者具有更多功能集的东西,如 redis。

于 2012-04-08T18:53:40.307 回答
4

redis仍然需要序列化任何 complex python object,因此redis除非您将所有数据表示为简单的键和简单的值,否则不能解决此问题。redis不是反序列化解决方案,它只是字符串的数据存储。无论如何,redis是较慢的选项之一: https ://charlesleifer.com/blog/completely-un-scientific-benchmarks-of-some-embedded-databases-with-python/

于 2015-06-02T16:21:53.530 回答
0

使用内存中的真实数据库。不要使用 pickle、cPickle 或 marshal 或类似的东西。

于 2012-04-08T19:03:27.157 回答