我有一个(Django)Web应用程序,需要构建大型(numpy)数组,假设每个向量1MB。它适用于多个进程(由Apache / mod_wsgi生成)。
目前我正在使用内存缓存,最简单的版本是全局变量。从缓存中检索数据是即时的 - 我只需要。但是,每个进程都需要在自己的内存中复制缓存,并且unpredictable哪个进程加载了数据而哪些进程没有(我想在启动时加载一次)。
我尝试 Memcached 和 Redis 在进程间拥有共享缓存。两者都需要首先序列化数据:字符串和整数。现在,当我想要读取向量时,反序列化大约需要10秒,对于用户在单击按钮后等待有点长。
是否有任何解决方案可以同时在RAM中存储一些任意数据而无需序列化为字符串,并在不同进程之间共享? (重启后我对持久性不感兴趣。)
答案 0 :(得分:2)
Redis支持许多data types,包括原始字节
字符串是最基本的Redis值。 Redis Strings是 二进制安全,这意味着Redis字符串可以包含任何类型 数据,例如JPEG图像或序列化的Ruby对象。
Redis被证明是快速的,所以也许你应该关注一种快速反序列化的有效序列化格式,例如。