[英]Storing binary blobs from node.js in memcached
我有一个处理动态图像的node.js应用程序。 在某些时候我需要缓存一个图像,我现在只是将它们写入磁盘上的文件。
我正在考虑用memcached替换文件缓存。
所以,我的问题是:有没有办法使用节点的流(ReadableStream / WritableSteam)存储和读取memcached中的二进制数据?
我想要实现的简化示例:
更新:我了解到memcached对可以存储的值有固定的大小限制,这使得它不适合我的用例。
我会研究像Redis这样的其他技术,看看我能用它做些什么。
好的,你的问题的简单答案是肯定的。 是的,有一种方法可以使用节点流向/从memcached存储/读取二进制数据。 “如何”是更难的部分。
NodeJS是解决这类问题的特殊平台。 使用Stream系统的好处是,当从memcached服务器来回传递图像时,节点实例将不会使用太多内存,但是这个古老的问题出现了:这是你想要的吗?
我不是memcached的专家,但鉴于我对NodeJS及其memcached协议文档的了解,我确信只要有足够的时间,我就可以编写完全符合我需求的定制流实现......但谁有时间?
有一些竞争的memcached模块,有一个非常好的SO答案,总结了这里的差异: https : //stackoverflow.com/a/10430328/690826
那个答案暗示了mc模块,乍一看似乎没有公开流接口,而是它有更常见的节点回调api。 这将有一个问题,当一个文件被提供给客户端时,整个文件将在该请求期间在内存中。
现在,我知道我已经说了一次,但我会再说一遍: 这完全取决于你需要什么 。 如果您的场景意味着您将受内存限制而不是带宽限制,那么您可以a)尝试查找/实现基于流的memcached接口或b)并行化您的节点端点。
这也引出了一个问题,你真的需要memcached吗? 我对此类问题的第一种方法是实现类似https://www.npmjs.org/package/node-static的内容 ,看看你的服务器/服务有多好。
同样,这个建议是根本不知道你的应用程序的大小,所有这些决定应该真正考虑到这个重要的事实。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.