非序列化数据的共享内存缓存

时间:2016-03-24 15:56:38

标签: python django caching redis memcached

我有一个(Django)Web应用程序,需要构建大型(numpy)数组,假设每个向量1MB。它适用于多个进程(由Apache / mod_wsgi生成)。

目前我正在使用内存缓存,最简单的版本是全局变量。从缓存中检索数据是即时的 - 我只需要。但是,每个进程都需要在自己的内存中复制缓存,并且unpredictable哪个进程加载了数据而哪些进程没有(我想在启动时加载一次)。

我尝试 Memcached Redis 在进程间拥有共享缓存。两者都需要首先序列化数据:字符串和整数。现在,当我想要读取向量时,反序列化大约需要10秒,对于用户在单击按钮后等待有点长。

是否有任何解决方案可以同时在RAM中存储一些任意数据而无需序列化为字符串,并在不同进程之间共享? (重启后我对持久性不感兴趣。)

1 个答案:

答案 0 :(得分:2)

Redis支持许多data types,包括原始字节

  

字符串是最基本的Redis值。 Redis Strings是   二进制安全,这意味着Redis字符串可以包含任何类型   数据,例如JPEG图像或序列化的Ruby对象。

Redis被证明是快速的,所以也许你应该关注一种快速反序列化的有效序列化格式,例如。