首页 雷火电竞官网正文

sir,Redis高档用法:BitMap运用-雷火电竞安卓app

admin 雷火电竞官网 2019-12-02 147 0

BitMap介绍

Bitmap是一串接连的2进制数字(0或1),用1个bit位来表明一个数据是否呈现过,0为没有呈现过,1表明呈现过,运用的时分能够依据某一个位是否为0表明此数是否呈现过。8个bit能够组成一个Byte,所以bitmap自身会极大的节约贮存空间。

Redis中bitmap

Redis从2.2.0版别开端新增了setbit,getbit,bitcount等几个bitmap相关指令,虽然是新指令,可是并没有新增新的数据类型,由于setbit等指令只不过是在set上的扩展。

相关指令

  • setbit
  • 指令 SETBIT key offset value
  • 复杂度: O(1)
  • getbit
  • 指令 GETBIT key
  • 复杂度: O(1)
  • bitcount
  • 指令 BITCOUNT key
  • 复杂度: O(1)

运用场景

根据bitmap极低的时刻和空间复杂度,在大数据符号等相似布隆过滤的场景有广泛的用武之地。以在线用户计算为例,设置用户ID为offset,假如在线就设置为1,不在线就设置为0,运用bitmap,1000W用户只需要1.2MB的空间。

require 'vendor/autoload.php';
$redis = new Predis\Client([
'host' => '127.0.0.1',
'port' => 6379
]);
// 衔接redis
$redis->connect();
// 上线
function online($uid)
{
global $redis;
$redis->setbit('online', $uid, 1);
}
// 下线
function offline($uid)
{
global $redis;
$redis->setbit('online', $uid, 0);
}
// 判别是否在线
function isonline($uid)
{
global $redis;
$redis->getbit('online', $uid);
}
// 在线计算
function total()
{
global $redis;
return $redis->bitcount('online');
}
// 批量设置在线状况
$uids = range(1, 10000);
foreach ($uids as $uid) {
online($uid);
}
// 批量设置下线状况
$i = 0;
$max = mt_rand(1000, 3000);
while ($i < $max) {
offline(mt_rand(1, 10000));
$i++;
}
echo '当时在线人数: ', total(), PHP_EOL;


雷火电竞版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

国海证券,华泰稳妥股权又发作变化 君正系拟减持 不再追求控股-雷火电竞安卓app

  • 种田文,财政部提早下达专项扶贫资金1136亿-雷火电竞安卓app

    种田文,财政部提早下达专项扶贫资金1136亿-雷火电竞安卓app

  • 杜淳,东方时髦11月19日快速反弹-雷火电竞安卓app

    杜淳,东方时髦11月19日快速反弹-雷火电竞安卓app

  • 有道词典,中科院院长白春礼:加快带动我国严重原创才能-雷火电竞安卓app

    有道词典,中科院院长白春礼:加快带动我国严重原创才能-雷火电竞安卓app

  • 最近发表

      雷火电竞安卓app_雷火电竞app下载_雷火竞技竞猜平台

      http://www.mr-sportsman.com/

      |

      Powered By

      使用手机软件扫描微信二维码

      关注我们可获取更多热点资讯

      雷火电竞出品