您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman-redis組件 -bitCount
发布时间:2021-12-26 15:17:10编辑:雪饮阅读()
bitCount
计算字符串中的设置位数(人口计数)。
默认情况下,会检查字符串中包含的所有字节。只能在传递附加参数 start 和 end 的间隔中指定计数操作。
与 GETRANGE 命令类似,开始和结束可以包含负值,以便从字符串的末尾开始索引字节,其中-1是最后一个字节,-2是倒数第二个字符,等等。
结果返回字符串中值为1的位数。
不存在的键被视为空字符串,因此该命令将返回零。
實例如:
<?php
use Workerman\Worker;
use Workerman\Redis\Client;
use Workerman\Connection\TcpConnection;
use Workerman\Timer;
require_once __DIR__ . '/vendor/autoload.php';
$worker = new Worker('http://0.0.0.0:6161');
global $offset;
$worker->onWorkerStart = function() {
global $offset;
$offset=0;
};
$worker->onMessage = function(TcpConnection $connection, $data) {
$redis = new Client('redis://127.0.0.1:6379');
$redis->set('key', 'hello');
$redis->bitCount( 'key', 0, 0, function ($result) {
//1101000=>3
var_dump($result); // 3
}) ;
$redis->bitCount( 'key', function ($result) {
var_dump($result); //21
}) ;
};
Worker::runAll();
實例運行並有http客戶端訪問時:
[root@localhost www.fpm.com]# /usr/local/php734/bin/php channelServer.php start
Workerman[channelServer.php] start in DEBUG mode
----------------------------------------- WORKERMAN -----------------------------------------
Workerman version:4.0.22 PHP version:7.3.4
------------------------------------------ WORKERS ------------------------------------------
proto user worker listen processes status
tcp root none http://0.0.0.0:6161 1 [OK]
---------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
int(3)
int(21)
爲什麽是3和21,咱們可以利用js分析下
首先我們封裝一個可以將字符串轉換成2進制的方法(按每個字符轉換后結果以逗號分隔),然後再進行上面的結果測試驗證
function get2bs(str){
var items=[];
for(var i=0;i<str.length;i++){
//charCode 10進制,toString(2)進制
items.push(str[i].charCodeAt(0).toString(2));
}
return items.join(",");
}
var items=[];
for(var i=0;i<str.length;i++){
//charCode 10進制,toString(2)進制
items.push(str[i].charCodeAt(0).toString(2));
}
return items.join(",");
}
顯然一個h的二進制數中,只有3個位是1的位,而整個hello每個字符的包含1的位就總共有21個了。
关键字词:workerman,redis,bitCount