Redis性能问题?

Lal*_*ith 6 performance redis node.js

我试图在我的Redis上加重一些用于测试目的,并找出任何上限.首先,我加载了50,000和100,000个大小为32个字符的键,其值大约为32个字符.两种按键尺寸的使用时间不超过8-15秒.现在我尝试将4kb的数据作为每个键的值.首先10000键需要800毫秒来设置.但从那时起,它逐渐减慢并设置整个50,000键,需要40分钟.我正在使用带有node_redis(Mranney)的 NodeJ加载数据库.我正在做的任何错误,或者Redis只是那么大的4 KB大值?

我现在发现的另一件事是,当我运行与当前客户端并行的另一个客户端并更新密钥时,第二个客户端在8秒内完成加载500k密钥和4kb值,而第一个客户端仍然永远执行其操作.它是节点或redis库中的错误吗?这是惊人的,不适合生产.

Mat*_*ney 5

从节点到Redis进行批量写入时,您需要承受某种背压.默认情况下,节点将对所有写入进行排队,并且不会对传出队列大小强制执行上限.

node_redis有一个"排水"事件,你可以听,以实现一些基本的背压.

  • 这里有几个不同的问题.首先是预连接命令排队.第二个是,一旦建立连接,就会为发送的命令维护另一个队列,但尚未收到回复.我在这里添加了一个处理这两种情况的一般方法示例:https://github.com/mranney/node_redis/blob/master/examples/backpressure_drain.js (2认同)