Fork me on GitHub

redis新数据类型Bitmaps基础操作

1、首先连上你的redis

以下一些命令很简单,或者执行命令后效果也无法体现的就没有进行截图展示

2、Bitmaps相关操作
说明:现在的计算机用二进制(位)作为信息的基础单位,Bitmaps就是进行位操作的数据类型。如果合理使用Bitmaps,
将有效提高内存使用率和开发效率。Bitmaps本身不是一种数据类型,实际上它就是字符串,但是它可以对字符串的位进行操作。
可以将bitmaps想象成一个以位为单位的数组,数组的下标称为偏移量。单个Bitmaps 的最大长度是512MB,即2^32个比特位。


-------------------位操作开始------------------

1、SETBIT
作用:对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit):
语法:setbit key offset value
实践:setbit user1 1 1。说明:设置key为user1的位数组下标为1的值为1。其它相同命令:
setbit user1 4 1
setbit user1 11 1
setbit user1 16 1
setbit user1 18 1
将user1中下标为1,4,11,16,18的位置,值设置为1。

2、GETBIT
作用:对 key 所储存的字符串值,获取指定偏移量上的位(bit)。
语法:getbit key offset

3、BITCOUNT
作用:计算给定字符串中,被设置为 1 的比特位的数量
语法:bitcount key [start end [BYTE|BIT]]
[start end [BYTE|BIT]]:start与stop表示下标,可看到都为闭区间([符号为闭区间)。当选择BYTE参数时,表示以字节作为单位进行计算。
比如上述例子中1,4,11,16,18位置被设置为1,则当前的位数组中的情况为[01001000 00010000 10100000],则以BYTE作为单位,下标为[0, 1, 2]分别代表位数组的三个字节。
如果选择BIT参数,则[01001000 00010000 10100000],下标就是位数组中的偏移量。对应如下下标[0,1,2,3,4,5,6,7, ... ,13,14,15, ..., 22,23]
实践截图如下:bitcount默认是选择BYTE参数。所以bitcount user1 0 1,发现1,4,11三个位置为1了,所以返回的是3。

4、BITOP
作用:对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。
语法:bitop operation destkey key [key ...]
operation:进行位操作所支持的函数
BITOP 命令支持 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种参数:
BITOP AND destkey srckey1 srckey2 srckey3 ... srckeyN ,对一个或多个 key 求逻辑并,并将结果保存到 destkey 。
BITOP OR destkey srckey1 srckey2 srckey3 ... srckeyN,对一个或多个 key 求逻辑或,并将结果保存到 destkey 。
BITOP XOR destkey srckey1 srckey2 srckey3 ... srckeyN,对一个或多个 key 求逻辑异或,并将结果保存到 destkey 。
BITOP NOT destkey srckey,对给定 key 求逻辑非,并将结果保存到 destkey 。
除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入。
构建两个key,user1与user2,user1的1,5位设置为1,user2的5,7位设置为1

[BITOP AND]实践:and运算,等于java中的&运算
命令:bitop and user3 user1 user2

解释图:

[BITOP OR]实践:or运算,等于java中的|(或)运算

解释图:

[BITOP XOR]实践:xor运算,等于java中的^(异或)运算
^(异或):二元运算符,两者相等为0,不等为1

解释图:

[BITOP NOT]实践:not运算,等于java中的~取反运算。
~取反:1变0,0变1

解释图:略

5、BITPOS
作用:返回位图中第一个值为 bit 的二进制位的位置。
语法:bitpos key bit [start [end [BYTE|BIT]]

-------------------位操作结束------------------

3、总结:
关于Bitmaps数据类型中的bitfield命令可以通过bitfield详解来了解。

posted @ 2022-10-10 22:07  三脚半猫  阅读(184)  评论(0编辑  收藏  举报