当前位置:网站首页>easyswoole 使用redis执行geoRadiusByMember Count无效修复
easyswoole 使用redis执行geoRadiusByMember Count无效修复
2022-08-02 03:24:00 【auspi12341】
此BUG作者已更新:https://github.com/easy-swoole/redis/pull/23/files
问题原因 ,geoRadiusByMember 参数列表如下,使用Count的时候需要带上 Count X 条数,例如需要5条就是 Count 5,
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
而框架提供的方法
geoRadiusByMember($key, $location, $radius, $unit, $withCoord, $withDist, $withHash, $count, $sort, $storeKey, $storeDistKey);
存在count参数,但是怎么设置也没有效果,设置数组还要报错,跟踪问题,定位
vendor/easyswoole/redis/src/Client.php文件方法,此处为考虑到count这种特殊情况,
public function sendCommand(array $commandList): bool
{
$argNum = count($commandList);
$str = "*{$argNum}\r\n";
foreach ($commandList as $value) {
$len = strlen($value);
$str = $str . '$' . "{$len}\r\n{$value}\r\n";
}
return $this->send($str);
}
修改如下,即可正常返回
public function sendCommand(array $commandList): bool
{
$argNum = 0;
foreach ($commandList as $data ){
if(is_array($data)){
$argNum = $argNum + (count($data) + 1);
}else{
$argNum ++;
}
}
$str = "*{$argNum}\r\n";
foreach ($commandList as $value) {
if(is_array($value)){
foreach ($value as $key => $values) {
$len = strlen($key);
$str = $str . '$' . "{$len}\r\n{$key}\r\n";
$len = strlen($values);
$str = $str . '$' . "{$len}\r\n{$values}\r\n";
}
}else{
$len = strlen($value);
$str = $str . '$' . "{$len}\r\n{$value}\r\n";
}
}
return $this->send($str);
}
边栏推荐
猜你喜欢
随机推荐
每日五道面试题总结 22/7/20
vue3 访问数据库中的数据
解决5+APP真机测试无法访问后台(同局域网)
ES6数组的扩展方法map、filter、reduce、fill和数组遍历for…in for…of arr.forEach
枚举法方法:(leetcode1300)转变数组后最接近目标值的数组和
三元判断再三元判断
v-bind用法:类动态绑定对象 数组 style样式 及函数方法
---static page---
js __proto__、prototype、constructor的关系
URL模块
SQL分类、DQL(数据查询语言)、以及相应SQL查询语句演示
TCP通信程序
广州华为面试总结
项目中遇到的问题
正则笔记(2)- 正则表达式位置匹配攻略
Amazon sellers how to improve the conversion
ES6介绍+定义变量+不同情况下箭头函数的this指向
js 数组去重的常用方法
环形链表---------约瑟夫问题
npm和package.json