是的,键和值都可以为空。
由于k
redis写的慢,可能是节点数据不足,网络慢,或者主机原因。
大量导入数据时,可以使用resp协议。
传统命令的缺点
传统的redis客户端命令在导入大量数据的场景下存在以下缺陷:
因为redis是单线程的模型,虽然避免了多线程下线程切换的时间,快速执行单个序列的命令,但是在海量数据导入的场景下,发送命令和接收服务器响应结果的时间会被放大。
如果需要导入100万条数据,光是命令执行时间就要花费100万*(t1t2)。
resp议定书散装
redis客户端使用称为resp(redis序列化协议)的协议与redis服务器通信。
redis-cli管道模式需要和nc命令一样快,它解决了nc命令不能我不知道命令什么时候结束。
在发送数据时,它还会读取响应并尝试解析它。
一旦输入流中不再有数据被读取,它将发送一个特殊的20位echo命令,表明最后一个命令已经发送。如果响应结果中匹配到相同的数据,则批量传输成功。
使用这种技术,我们不不需要解析发送给服务器的协议来知道我们发送了多少命令,只需解析回复。
redis在解析回复时,会对解析的回复进行统计,最终可以告诉用户大量插入的会话向服务器传输的命令数量。也就是我们使用上面的管道模式实际操作的响应结果。