您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
redis写入数据,越来越慢,是什么原因?
命令,数据,协议redis写入数据,越来越慢,是什么原因?
发布时间:2019-02-08加入收藏来源:互联网点击:
redis写入数据,越来越慢,是什么原因?
回答于 2019-09-11 08:43:50
回答于 2019-09-11 08:43:50
Redis写入慢,可能是节点数据量不够,网络慢、或者是主机等等层面的影响。
在大批量导入数据的时候,可以使用RESP协议。
传统命令的缺点
使用传统的redis client命令在大数据量的导入场景下存在如下缺陷:
由于redis是单线程模型,虽然避免了多线程下线程切换所耗费的时间,单一顺序的执行命令也很快,但是在大批量数据导入的场景下,发送命令所花费的时间和接收服务器响应结果耗费的时间就会被放大。
假如需要导入100万条数据,那光是命令执行时间,就需要花费100万*(t1 + t2)。
RESP协议 bulk
Redis客户机使用一种称为RESP (Redis序列化协议)的协议与Redis服务器通信。
redis-cli pipe模式需要和nc命令一样快,并且解决了nc命令不知道何时命令结束的问题。
在发送数据的同时,它同样会去读取响应,尝试去解析。
一旦输入流中没有读取到更多的数据之后,它就会发送一个特殊的20比特的echo命令,标识最后一个命令已经发送完毕 如果在响应结果中匹配到这个相同数据后,说明本次批量发送是成功的。
使用这个技巧,我们不需要解析发送给服务器的协议来了解我们发送了多少命令,只需要解析应答即可。
在解析应答时,redis会对解析的应答进行一个计数,在最后能够告诉用户大量插入会话向服务器传输的命令的数量。也就是上面我们使用pipe模式实际操作的响应结果。
上一篇:iphone可以频繁充电吗?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |