位運算在redis中非常的方便使用,並且理由利用這個可以實現很多特殊的功能。這也迫使我去研究更多的redis提供的函數,只有研究的多,思路才能夠更加開放。今天我就對strings下麵的幾個函數進行了測試,也收穫頗豐。 使用setBit和bitCount可以實現用戶活躍天數的統計,大體的思路如下:我們 ...
位運算在redis中非常的方便使用,並且理由利用這個可以實現很多特殊的功能。這也迫使我去研究更多的redis提供的函數,只有研究的多,思路才能夠更加開放。今天我就對strings下麵的幾個函數進行了測試,也收穫頗豐。
使用setBit和bitCount可以實現用戶活躍天數的統計,大體的思路如下:
我們網站今天第一天上線,某用戶taoshihan,今天有訪問那麼我就記一下,網站第一天,taoshihan訪問1;
網站第二天,taoshihan訪問1;網站第80天,taoshihan訪問1;其餘時間沒有訪問過,那麼我們統計得出taoshihan活躍天數為3。
使用代碼體現為如下,具體解釋可以查看視頻:
https://www.bilibili.com/video/av70912075/
//使用setBit和bitCount實現用戶線上天數的統計
$redis->set("taoshihan",'@');//@符號的二進位形式為 01000000
$redis->setBit("taoshihan",1,1);
$redis->setBit("taoshihan",2,1);
$redis->setBit("taoshihan",80,1);
$v=$redis->bitCount("taoshihan");
var_dump($v);//輸出3
<?php $redis=new Redis(); $redis->connect('127.0.0.1', 6379); //append-將值附加到鍵 $redis->set('name','taoshihan'); $redis->append('name',' very good'); $v=$redis->get('name'); var_dump($v);//string(19) "taoshihan very good" //對字元串二進位位為1的個數進行統計 $redis->set('name','a'); $v=$redis->bitCount('name'); var_dump($v);//int(3) //對多個字元串進行位運算 $redis->set("test1",'a'); $redis->set("test2",'b'); $redis->bitop("OR",'restkey','test1','test2'); $v=$redis->get('restkey'); var_dump($v);//string(1) "c" //更改字元串的指定位 $redis->set("name",'a');//a的二進位形式 01100001 $redis->setBit("name",3,1);//從左到右數,從0開始 $v=$redis->get("name"); var_dump($v);//輸出q,二進位為01110001 //使用setBit和bitCount實現用戶線上天數的統計 $redis->set("taoshihan",'@');//@符號的二進位形式為 01000000 $redis->setBit("taoshihan",1,1); $redis->setBit("taoshihan",100,1); $redis->setBit("taoshihan",150,1); $v=$redis->bitCount("taoshihan"); var_dump($v);//輸出3