搜狗workflow框架例程分析——02

本文档描述了一次通过虚拟机NAT模式远程访问Redis数据库的测试过程,涉及命令封装、回调函数及任务序列管理。代码分析中指出,与HTTP操作类似,Redis访问分为命令构建和响应处理两步,但不同的是在特定条件下会生成新的GET任务并推送到任务序列尾部,而非立即启动。这种方法确保了日志打印的顺序,避免了并发可能导致的混乱。
摘要由CSDN通过智能技术生成

测试结果

任务:实现一次redis写入与读出:redis_cli,在主机(windows 10)运行redis-server,在虚拟机(ubuntu NAT模式)中运行例程02并向主机数据库传送key和val
在这里插入图片描述
首先在本地读取数据库观察只含有一个key:mykey,后运行例程02,在观察数据库中多了一条记录。
由于虚拟机使用NAT模式,所以本次测试可以看做是远程访问。

代码分析

访问redis数据库的操作与例程01抓取http操作有些类似,依旧是分为两个部分,
1、封装redis命令报,
2、获取返回数据并处理。
但是又和例程01中有一些不一样,在第一部分中保存了一些用户数据被用在了callback函数中,并且在callback函数中,如果检测到SET命令,会创建一个新的SET命令报,发送给redis,然后再GET刚才输入的数据并打印出来。
在这里插入图片描述
这段代码中新出现了一种操作

series_of(task)->push_back(next);

在这里next是我们下一个要发起的redis task,执行GET操作。我们并不是执行next->start()来启动任务,而是把next任务push_back到当前任务序列的末尾。

两种方法的区别在于:

  • 用start来启动任务,任务是被立刻启动的,而push_back的方法,next任务是在callback结束之后被启动。
    • 最起码的好处是,push_back方法可以保证log打印不会乱。否则,用next->start()的话,示例中"Finished."这个log可能会被先打印。
  • 用start来启动下一个任务的话,当前任务序列(series)就结束了,next任务会新启动一个新的series。
    • series是可以设置callback的,虽然在示例中没有用到。
    • 在并行任务里,series是并行任务的一个分枝,series结束就会认为分枝结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个旅者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值