redis-bit-mapに関するコマンドと一般的なシーンについて説明します

3111 ワード

紹介redis-Bit-Mapの関連コマンドと共通シーン
関連コマンド(5種類)
  • SETBIT key offset valuekey offsetオフセット位置value 0または1を設定
  • GETBIT key offsetセットキーoffsetオフセット位置を取得するvalueは0または1を返します
  • BITCOUNT key [start end]keyを取得したvalueは1の総数、[start end]はオプションパラメータで範囲を設定できます.ここで注意したいのは、startとendでbyteが使用されsetとgetが使用するbitは、8:1の関係です.
  • BITOP OP destkey srckey1 srckey2 srckey3 ... srckeyNここOPに設定可能AND( )OR( )XOR( )およびNOT( )destkeykeyの名称、srckey1-Nは計算用bitmapkey値です.
  • BITPOS key bit [start] [end]1または0に設定された1文字列の最初の点を返す位置
  • 一般的なシーン
  • 1製品レビュー総数、称賛数統計$redis = new redis();
    $redisHost = $this->GetRedisHttpLink();
    $redis->connect($redisHost, 6379);
    $key = 'comment'.$data['KeyNO'].$data['CommentTypeID'];
    $uid = $data['UID'];
    $redis->setBit($key, $uid, 1);
    echo $redis->getBit($key, $uid ) . PHP_EOL;
    echo ' :' . $redis->bitCount($key);exit();
  • 2アクティブユーザ統計
    $key1 = 'Userlogin2017-08-01';
    $key2 = 'Userlogin2017-08-02';
    $key3 = 'Userlogin2017-08-03';
    
    ##      8 1     8 2       
    
    $redis->setBit($key1, $uid, 1);
    $redis->setBit($key2, $uid, 1);
    
    ##  bitmap     1 2       
    
    $redis->bitOp('AND','8182',$key1,$key2);
    $both_active = $redis->bitCount('8182');
    
    ##  bitmap     1    2    3       
    
    $redis->bitOp('OR','818283',$key1,$key2,$key3);
    $other_active = $redis->bitCount('818283');
    Bit-Mapは、多くの場合に使用され、記録値は操作そのものに関係なく、結果に関連するイベントです.たとえば、「いいね」、「数の統計」、「アクティブ値」、「結果に関連」、つまり結果統計のイベントを0または1で表すことができます.昔の人と縄張りをして時間を記録するのと同じように、縄張りをしていいねという事件を記録することもできます.