示例所有Key名都为bigkang为示例
首先我们需要了解什么是Bit,其实所有的Bit *** 作都是在 *** 作字符串类型,我们设置了bit以后可以发现他的类型其实是一个String
然后我们来获取这个bit的类型
那么我们就会发现其实存储的数据是一个字符串,那么字符串和bit有什么关系呢,我们知道Redis中的字符串底层采用的SDS,实际上它存储的一个char数组,那么这个char数组,那么C语言中一个char等于1个byte,一个byte等于8个bit,我们可以知道一个char能够存储8个bit,那么Redis的String能够存储512MB,那么我们再来看一下最大能够存储多少个bit位:
最大存储数量
512 * 1024 * 1024 * 8 =42 9496 7296 (大约43亿)
MB KB ByteBIit
我们就能够存储大约43亿bit,每个bit的值只能是0 或樱信者 1
我们上访的 *** 作 setbit newbit 1 1 就是将bit位为1,也就是第二个bit设置为1,bit为数组
大概的流程图如下:
这样我们就可以知道bit位在 0 - 7的属于第一个字节,8 - 15属于第二个字节,那么我们现在来测试一下吧
例如我们想要获取某个bit位的值,我们使用getbit
BitCount可以统计我们的Bit数组中的值为1的数据,例如我想要统计bit位的值的结果有多少。(!注意是根据一个char,也就是一个byte=8bit进行统计,每个值表示相应的8个bit)
如下
或者根据范围进行统计携大
Bit主要用来帮助我们对不同Bit进行 *** 作,和Set中的并集,并归等类似。
现在我们来初始化两个bit数据
目前两个Bit中的结构如下
那么我们知道既然是二进制,那么肯定是有运算的,例如与,或等等
Redis提供了如下几种
AND
OR
NOT
XOR
Bit *** 作可以帮助我们存储大量的数据,以及状态,我们可以在多个场景下使用,例如用户的连续登录,辩颂竖以及活跃用户统计。
例如如下 *** 作,我们的Key采用 login-年-月-日 ,bit位 使用用户ID,状态为1
新建一个文本文件,包含redis命令。redis是一个内存数据库, 因此数据基本上都存在于内存当中,保证放入redis数据成功需要新建一个闭胡文本文件,包含redis命令。Redis是一个开源的使用ANSIC语言编写做态袜、支持网络、可基于内存亦可持纯激久化的日志型、Key-Value数据库,并提供多种语言的API。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)