位運算在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

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/135891.html
標籤:PHP
上一篇:window中php的互動模式
