Bitmaps —

位图不是实际的数据类型,而是在String类型上定义的一组面向位的操作。由于字符串是二进制安全blob,并且它们的最大长度为512 MB,因此它们适合设置2
^ 32个不同的位。

位操作分为两组:恒定时间单位操作,如将位设置为1或0,或获取其值,以及对位组进行操作,例如计算给定位范围内的设置位数(例如,人口统计)。

位图的最大优势之一是它们在存储信息时通常可以节省大量空间。例如,在通过增量用户ID表示不同用户的系统中,可以使用仅512MB的存储器记住40亿用户的单个位信息(例如,知道用户是否想要接收新闻通讯)。

使用SETBIT和GETBIT命令设置和检索位:

> setbit键10 1
(整数)1
> getbit键10
(整数)1
> getbit键11
(整数)0
SETBIT命令将位数作为其第一个参数,将第二个参数作为设置该位的值,即1或0.如果寻址位超出当前字符串长度,则命令会自动放大字符串。

GETBIT只返回指定索引处的位值。超出范围的位(寻址存储在目标密钥中的字符串长度之外的位)始终被认为是零。

有三组命令在一组位上运行:

BITOP在不同的字符串之间执行逐位操作。提供的操作是AND,OR,XOR和NOT。
BITCOUNT执行填充计数,报告设置为1的位数。
BITPOS查找具有指定值0或1的第一个位。
BITPOS和BITCOUNT都能够使用字符串的字节范围进行操作,而不是在字符串的整个长度上运行。以下是BITCOUNT调用的一个简单示例:

> setbit键0 1
(整数)0
> setbit键100 1
(整数)0
> bitcount键
(整数)2
位图的常见用户案例是:

各种实时分析。
存储与对象ID关联的节省空间但高性能的布尔信息。

例如,想象一下您想知道网站用户每日访问的最长连续性。您开始计算从零开始的天数,即您将网站公开的日期,并在每次用户访问网站时使用SETBIT设置一些。作为位索引,您只需获取当前的unix时间,减去初始偏移量,然后除以3600
* 24。

这种方式对于每个用户,您都有一个包含每天访问信息的小字符串。使用BITCOUNT可以轻松获得给定用户访问网站的天数,同时只需几次BITPOS调用,或者只是获取和分析客户端位图,就可以轻松计算出最长的条纹。

位图很容易分成多个键,例如为了分片数据集,因为通常最好避免使用大键。要在不同的密钥上拆分位图而不是将所有的位都设置为密钥,一个简单的策略就是每个密钥存储M位并获得带有位号/
M的密钥名称和第N位用于在密钥内部用位寻址 - 数字MOD M.

技术
©2019-2020 Toolsou All rights reserved,
Mybatis映射文件Mapper.xml中#和$的区别明明是post请求为什么会在地址栏显示参数?Keras训练数据加载实现小结[AndroidO] [RK3399] -- GPIO驱动与控制方式element-ui+vue-treeselect下拉框的校验fio使用详解vue 获取el-select选中项的label值c语言玫瑰告白代码指定位置输出字符串(详细解析)ElementUI中获取select 的label值