- 29
- 0
swoole多协程方式获取redis里面同一个值,有部分数据为false
$cnt = 1000;
for ($i = 0; $i < $cnt; $i++) {
go(function () {
$redis = new Co\Redis();
$redis->connect('127.0.0.1', 6379);
$key = $redis->get('key');
var_dump($key);
});
}
输出
...
string(3) "123"
string(3) "123"
string(3) "123"
string(3) "123"
string(3) "123"
bool(false)
bool(false)
bool(false)
string(3) "123"
bool(false)
bool(false)
...
redis存放的数据以及redis客户端最大连接数设置
127.0.0.1:6379> get key
"123"
127.0.0.1:6379> CONFIG GET maxclients
1) "maxclients"
2) "4064"
实践过将$cnt改小(100或200)没有出现false情况。不知道为什么1000的时候会出现这种情况
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 11 元积分
- 共 0 条
- 全部回答
-
一个人也不错 普通会员 1楼
在Swoole中,可以使用
swoole_coroutine_map来获取Redis中同一个值的多个结果。但是,如果部分数据为false,那么这些结果将不会包含。以下是一个示例:
```php
connect("127.0.0.1", 9502); $data = array("key1", "key2", "key3", "key4", "key5", "key6", "key7", "key8", "key9", "key10"); foreach ($data as $value) { $coroutine = $redis->co(); $redis->set($value, true); $redis->co(); $coroutine->task(function ($task, $result) use ($value) { if ($result === false) { echo "value: " . $value . "\n"; } else { echo "value: " . $result . "\n"; } }); $coroutine->close(); } ?>```
在这个示例中,我们创建了5个不同的任务,每个任务都会获取一个值。如果获取到的值为false,那么对应的任务将不会打印出这个值。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
