Statistics 给HINCRBY打多少电话是合理的?

Statistics 给HINCRBY打多少电话是合理的?,statistics,redis,scaling,counter,Statistics,Redis,Scaling,Counter,我正在尝试重新发明轮子,并在Redis中存储一些统计数据 我正在考虑急切地聚合,并在每个新事件之后立即增加所有相关计数器(每秒可能发生几次) 每次事件需要调用HINCRBY5-50次,我的目标是每秒5-100次 这对Redis来说太多了吗? 如果是,我是否应该设定一些较低的限制(每个事件10次?只有一次?)? 如果不是,它是否可以在这些参数中进行缩放(我更感兴趣的是缩放到1000个事件?10000个?) 显然,我还得去收集垃圾。我计划通过调用EXPIRE对每个事件所需的每个散列(不超过2-5次,

我正在尝试重新发明轮子,并在Redis中存储一些统计数据

我正在考虑急切地聚合,并在每个新事件之后立即增加所有相关计数器(每秒可能发生几次)

每次事件需要调用
HINCRBY
5-50次,我的目标是每秒5-100次

这对Redis来说太多了吗? 如果是,我是否应该设定一些较低的限制(每个事件10次?只有一次?)? 如果不是,它是否可以在这些参数中进行缩放(我更感兴趣的是缩放到1000个事件?10000个?)


显然,我还得去收集垃圾。我计划通过调用
EXPIRE
对每个事件所需的每个散列(不超过2-5次,因为一些计数器在同一个散列中)执行此操作。还好吗?

发疯吧。如果硬件支持,Redis将能够处理负载。显然,您应该尽快创建原型并进行试用,但这绝对是Redis应该能够处理的事情

不过,我建议您考虑一下扩展。提前解决扩展问题比等待问题出现要容易得多。Redis还没有任何集群解决方案,并且您受到RAM(和一个CPU)的限制,因此最终您将需要某种方式扩展到更多服务器

这样做的方法是客户端分片,即对每个操作散列密钥并查看其所在的服务器,然后与该服务器对话(这显然使得使用多个密钥的操作很难执行,因此您可能必须围绕这一点进行设计)。Ruby客户机有一些现成的支持,但是如果您使用的是另一个驱动程序(),那么自己做并不困难(尽管不方便)

我建议先在同一台机器上运行两个或四个Redis实例(每个CPU一个,或者类似的),再加上另一台机器运行从机以实现冗余和故障切换(您还可以在每台服务器上运行两个主机和两个从机)。这样,如果您需要增长,将实例移动到其他服务器并不需要太多工作。如果您有四个实例,您将能够毫无困难地移动到四台机器,因为您所要做的就是在新机器上设置一个从机,等待它同步,然后将其用作主机。如果一开始没有四个实例,移动到一台新机器意味着手动移动关键点,这可能需要很多工作