使用Redis作为分布式内部节点Jcaching

目前,我在Amazon beanstalk上有两个负载平衡的单进程nodeJS实例。 他们每个只使用一个简单的内存中的对象作为caching。 由于它们位于不同的服务器上,因此它们的caching不共享。

这就是Redis进来的地方。我想利用Redis来创build一个共享caching,但是只能填充NodeJ的内部内存。

你看,目前我正在caching4KB-10KB的对象,如果我完全依赖Redis,那么我不仅有Redis延迟来检索对象,还有networking延迟。 我宁愿使用Redis作为永久性caching,它将在启动时填充我的nodeJS实例,并且还要保持两个内部caching周期性同步(每x分钟)

一个非常基本的nodeJs内存caching是https://github.com/tcs-de/nodecache

更复杂的事情,我正在寻找开始使用nodeJS集群能力分叉在同一个服务器下的应用程序的多个进程。 因此,所有群集共享一个内存本地服务器caching是非常重要的。

前面提到的nodejs lib有一个包装器,可以帮助在集群环境中使用: https : //github.com/lvx3/cluster-cache


回顾一下,

我将有服务器A和服务器B谁将均衡负载均衡。 每个服务器(A&B)都会有4个nodeJs进程需要共享一个caching(也就是说,4个服务器的一个nodeJs进程应该都使用一个Server Acaching,

然后,我希望服务器A和服务器B高速caching周期性同步并“坚持”到Redis上。 在发生崩溃或重新部署时,服务器caching将使用Redis中的内容启动。


我有什么select? 有没有适合的解决scheme或混合解决scheme? 比如像nodecache这样的插件(简单),它有一个Redis插件? 我也使用快递,所以也许有快递中间件,将非常适合这个。

使用Redis来启动本地服务器内存caching还是值得的复杂性,还是应该仅仅依靠Redis来处理networking延迟?

一个可以接受的,但有点令人失望的时间,我得到一个10KB的对象是20毫秒。 我更喜欢大约1ms。 Redis和nodeJs服务器将在亚马逊上,所以会非常接近。

我知道,如果我有一个50MB的rediscaching,在服务器A和服务器B上将存在相同的50MB。为了速度的利益,我更愿意花钱在硬件/ RAM上。