在同一台服务器上设置redis及其客户端应用程序

时间:2012-12-21 08:09:43

标签: architecture redis

我正在查看设置配置平台/服务的选项,该配置平台/服务将为所有客户服务/应用程序提供配置。要求是应在专用服务器上设置。

我正在探索redis是否可以作为支持复杂键值配置的可能选项之一。如果要在与消费者不同的服务器上设置redis,那么GET会涉及一些网络延迟(我不是 非常担心SET,因为它们会非常少)比GETs)。我应该在客户端计算机上设置另一个缓存层(例如EhCache或其他)以避免机器到机器的网络延迟吗?在这种情况下,需要处理缓存同步和失效。此外,我已经读过redis支持复制,但是客户端服务机器上的从服务器(它是主服务器的确切副本)将占用大量内存,因为redis主要使用RAM来存储所有数据。而且,它们都可以竞争CPU /资源。

注意:客户端服务/应用程序当前部署在Amazon ec2媒体实例上。类似的也可以用于redis。

如果这个架构有任何不错的选择,或者这根本不好,请告诉我。提前致谢。

2 个答案:

答案 0 :(得分:4)

如果它们都是同一地区的EC2实例,那么我不会过分担心网络延迟。如果您假设您将拥有大量数据,我会使用m1large或m1xlarge进行redis。根据您的要求,缓存可能有意义,也可能没有意义。

我在EC2中使用了redis,每秒有数千个事务,没有任何问题。

答案 1 :(得分:4)

如果您感到好奇,我最近对从本地Redis服务器或同一数据中心的服务器请求之间的差异进行了基准测试。我在Rackspace服务器上测试过。我使用的Redis服务器已经设置了很长的字符串列表。每个字符串大约有400个字节。我使用lrange命令检索数据,在每个示例中调用它60次,并尝试请求一小组列表(每个lrange命令15个项目)和整个列表(每个lrange命令1000个项目)。

结果如下。

Server Location     Items/request    Time (s)
Regional Server     1000             4.270628188
Regional Server     15               0.095376321
Local Host          1000             0.207240364
Local Host          15               0.00823119