Redis性能问题?

| 我正尝试在Redis上加一些重负载以进行测试,并找出任何上限。首先,我为它加载了50,000和100,000个大小为32个字符的键,其值大约为32个字符。两种密钥大小都花费不超过8-15秒。现在,我尝试将4kb的数据作为每个键的值。前10000个键的设置时间为800毫秒。但是从那时起,它逐渐变慢,要设置整个50,000个密钥,大约需要40分钟。我正在使用带有node_redis(Mranney)的NodeJs加载数据库。我在做任何错误还是Redis大小4 KB的值这么慢? 我现在发现的另一件事是,当我与当前客户端并行运行另一个客户端并更新密钥时,第二个客户端在8秒内完成了以4kb的值加载50000个密钥,而第一个客户端仍然永久执行其操作。是节点还是redis库中的错误?这令人震惊,不适合生产。
已邀请:
从节点到Redis进行批量写入时,您将需要某种背压。默认情况下,节点将对所有写入进行排队,并且不对传出队列大小施加上限。 node_redis具有一个“ drain”事件,您可以侦听该事件以实现一些基本的反压力。
默认的redis配置并未针对此类使用进行优化。我怀疑您已将其交换到页面大小为32字节的磁盘上,这意味着添加的每个键都必须找到128个连续的空闲页面,并且可能最终使用系统VM或需要大量扩展交换文件。 更新密钥时,已经分配了空间,因此看不到任何性能问题。
由于我在异步进行的NodeJ中做了很多设置(键值),因此许多套接字连接同时打开。 NodeJ的套接字写缓冲区可能超载,GC可能随之而来,并弄乱了节点进程。 PS:我按照Tom的建议更改了Redis内存配置,但它仍在执行相同的操作。

要回复问题请先登录注册