bitmap 转byte[]后读取_闲谈redis的bitmap

bitmap的原理

bitmap就是通过最小的单位bit(8bit = 1b = 0.001kb)来进行0或者1的设置,表示某个元素对应的值或者状态。一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2。

优点

  • 基于最小的单位bit进行存储,所以非常省空间。
  • 设置时候时间复杂度O(1)、读取时候时间复杂度O(n),操作是非常快的。
  • 二进制数据的存储,进行相关计算的时候非常快。
  • 方便扩容

缺点

redis中bit映射被限制在512MB之内,所以最大是2^32位。建议每个key的位数都控制下,因为读取时候时间复杂度O(n),越大的串读的时间花销越多。

用法

setBit

给一个指定key的值得第offset位 赋值为value。

  • 参数:key offset value: bool or int (1 or 0)
  • 返回值:LONG: 0 or 1

getBit

返回一个指定key的二进制信息

  • 参数:key offset
  • 返回值:LONG

bitCount

返回一个指定key中位的值为1的个数(是以byte为单位不是bit)

  • 参数:key start offset
  • 返回值:LONG

bitOp

对不同的二进制存储数据进行位运算(AND、OR、NOT、XOR)

  • 参数:operation destkey key [key …]
  • 返回值:LONG

使用场景

用户在线状态

使用bitmap是一个节约空间效率又高的一种方法,只需要一个key,然后用户id为偏移量offset,如果在线就设置为1,不在线就设置为0,3亿用户只需要36MB的空间。

$status = 1;$redis->setBit('online', $uid, $status);$redis->getBit('online', $uid);

统计用户连续活跃天数

设定一个初始时间,往后每加一天即对应value中的offset的位置。

$start_date = '20170708';$end_date = '20170709';$offset = floor((strtotime($start_date) - strtotime($end_date)) / 86400);$redis->setBit('sign_123456', $offset, 1);//算活跃天数$redis->bitCount('sign_123456', 0, -1)
7ffb206872d108c9e88482d7f631a964.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

序1--年轻正当时(特权)

序1 年轻正当时 这本所谓的书,恐怕不一定能够带还没入门的U杀进FPGA开发的大门,当然也肯定不能达到进阶的目的。但是,姑且应了Bingo老弟所谓的对“图像的直觉”,确实图文并茂的从某一个山寨面把FPGA开发赤裸裸的展现给了大家。 被…

Windows 11 dapr 环境安装

安装其实很简单按照dapr官网操作步骤其实没什么大问题的,不过在没有好的网络访问github的情况下真是有点揪心啦!推荐使用 工具 fastgithub 访问githubFast:Github让Github畅通无阻windows 11 下的安装方式1.安装dapr cli 直接到Releases dapr/cli GitH…

日本原装进口雪平锅,煎炸炒煮全搞定,日本人用了 1000 年

▲ 点击查看小爆我虽然热爱烹饪,但不得不说「下厨房」,也是个坑。光是锅,我就要买好几个。为了蒸包子馒头买蒸锅,为了炒菜买炒锅,偶尔想精致喝热牛奶又买了小奶锅,为了煲汤、做点卤味解解馋,买炖…

Android开发学习笔记:浅谈Content Provider

一.Content Provider的概念介绍 Content Providers是所有应用程序之间数据存储和检索的桥梁,它使得各个应用程序之间实现数据共享。是应用程序间共享数据的唯一途径。Content Provider 主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口。其中包括…

VS2010插件之NuGet

Visual Studio(简写VS)是.net程序员开发必不可少的开发工具,随着VS的版本不断的升级和使用用户的扩大,现在针对VS开发了许多的开源免费的插件,大大的方便了程序员的开发,提高了开发效率。今天,我…

C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面

01—前言MEF是微软自家的托管可扩展框架,在这里我把它用成了ioc容器。在Caliburn.Micro框架下,view和viewmodel被注入到CompositionContainer容器中,然后通过名称可以实现view和viewmodel的匹配。利用这一特点,在多人合作项目开发…

女朋友竟然提出这种奇怪的要求......

1 为什么女朋友会提这么奇怪的要求?▼2 我的数学能力▼3 一看就是老龙人了阁下是古墓派传人吧▼4 如果可爱能晋级的话你已经赢了▼5 要做个与众不同的垃圾▼6 女孩子喜欢帅哥是不分年龄的▼‍‍7 单身狗又做错了什么呢?▼扫描这个二维码你将会有机…

Java编码规范,在您进行编码之前应该阅读的规范

为什么80%的码农都做不了架构师?>>> 本文转载于:http://www.web3d.com.cn/new/teach/java3d/2006/11/13/363276161.html Java编码规范 说明 1.1 为什么要有编码规范 编码规范对于程序员而言尤为重要,有以下几个原因: …

.NET Core 如何调试 CPU 爆高?

在这篇文章中我们将会分析一个 CPU 爆高的案例,测试demo链接 :https://docs.microsoft.com/en-us/samples/dotnet/samples/diagnostic-scenarios/ 。你将会学到:如何使用 dotnet-counters 确定真实的 cpu 使用率。使用 dotnet-trace 追踪代码…

[OIBH] 糖果盒(Candy Box)——又一个最大子矩形

http://codewaysky.sinaapp.com/problem.php?id1056 这题和奶牛浴场略有区别,奶牛浴场只需要求出最大子矩形,而这题要求的是最大权重子矩形,不一定要最大的面积,但要最大的权重和 思路是先求出每个最大子矩形,然后求出…

日本第一赘婿!他入赘近20年拿下诺贝尔奖,成名后不忘教光棍讨老婆......

全世界只有3.14 % 的人关注了爆炸吧知识谁能凭感性要诺贝尔奖私有1949年12月10号,日本民众发出了暌违多年的欢呼声,因为诺贝尔奖史无前例地颁给了一位日本物理学家——汤川秀树。报道汤川秀树获奖新闻的报纸获奖后,在自传《旅人:一…

修改mongodb最大查询数_WebFlux系列(十二)MongoDB应用,新增、修改、查询、删除

#Java#Spring#SpringBoot#Mongo#reactor#webflux#数据库#新增#修改#查询#删除#Spring Boot WebFlux Mongo数据库新增、删除、查询、修改视频讲解 : https://www.bilibili.com/video/av84240038/Employee.javapackage com.example.spring.webfluxmongo;import lombok.AllArgsCon…

为什么每个理发店门口都有彩色的柱子?你不知道吧

全世界只有3.14 % 的人关注了爆炸吧知识为什么街上的理发店门口都有一根旋转着的彩色灯柱?好学的小编忍不住去寻找真相...理发店门口彩色的柱子这根彩柱与医疗有关彩柱通常是3种颜色,白红蓝。一般认为:白色绷带,红色绷带上的血(动…

是否显示展开_Creo7.0教程之绝对精度对钣金件展开的作用详解

在讲Creo7.0绝对精度对钣金展开的帮助之前,我们有必要先来说明一下Creo的精度定义。刚使用Creo7.0版本的新建模型,很多网友就问,怎么模板文件中有两个同样单位的选择,“abs”和“rel”有什么区别?新建文件选项其实这就…

知乎点赞超过10万的科学脱单法!这绝对是我见过最硬核的撩妹套路......

全世界只有3.14 % 的人关注了爆炸吧知识科学脱单硬核撩妹前两天,超模君在知乎上看到一个热门的问答:开学后如何快速找到对象?这个话题,让超模君回想起了当年刚进入大学的那会儿,校园中秀恩爱的情侣无处不在&#xff0c…

office 高效办公智慧树_干货高效实用的office办公小技巧之word篇

对于office三剑客ppt、Word、Excel的使用成了日常,作为办公党,今天就拿出自己在平时工作之中发现、学到的小技巧来做个总结,分享给大家。相信很多大神对于这些小技巧都已经精通,所以lz会先列出目录,大家可以自行依据目…

POJ 1904 【强连通分量】.cpp

题意: 很久很久以前.. 有一个国王.. 他有好几个儿子.. 这些王子都喜欢上了邻国的公主.. 他们准备迎娶自己喜欢的公主中的一个.. 国王就让宰相给列一个清单.. 宰相就给了国王一个清单..上面写明了哪个王子将迎娶哪个邻国的公主.. 但是调皮的国王不太满意~~ 他还想知道…

电梯里为什么放镜子?90%的人都不知道

全世界只有3.14 % 的人关注了爆炸吧知识随着高层建筑不断的拔地而起我们每天可能会上下十几层的高楼人们当然不想去爬楼梯所以电梯已成为生活中必不可少的一部分▼我们几乎每天都会坐电梯上班时、回家时、逛街时当我们每走进电梯时第一动作都会干什么呢大概都会先看自己的妆容再…

WPF中的命令(Command)

这节来讲一下WPF中的命令(Command)的使用。【认识Command】我们之前说过,WPF本身就为我们提供了一个基础的MVVM框架,本节要讲的命令就是其中一环,通过在ViewModel中声明命令,从View中使用Binding绑定命令,就能实现从Vi…

matlab中给图像加几个矩形框_没想到!PPT中的这个效果,用好了,简直就是渣图美化器...

相信大家一定看到过,透过磨砂玻璃呈现在眼前的景色,是不是有种朦胧美?其实,在PPT中你也可以复刻出这样的效果。例如,这样的PPT页面:把背景虚化掉,更加突出主题。你想知道PPT中的磨砂效果&#x…