对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 dteskey 上
- operation 可以是 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种
- BITOP AND destkey key [key …] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey
- BITOP OR destkey key [key …] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey
- BITOP XOR destkey key [key …] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey
- BITOP NOT destkey key ,对给定 key 求逻辑非,并将结果保存到 destkey
- 除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入
- 当 BITOP 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0
- 空的 key 也被看作是包含 0 的字符串序列
已知a和b的二进制表示:
a = 01100001
b = 01100010
都为1才为1
AND=》求逻辑并(与) 1 and 1->1 0 and 0->0 1 and 0->0
bitop and aband a b
有一个为1就为1
OR=》求逻辑或 1 or 1->1 0 or 0->0 1 or 0->1
bitop or abor a b
就是取反(反转)
NOT=》求逻辑非 not 0 ->1 not 1->0
bitop not anot a
bitop not bnot b
相同为0,相异为1
XOR=》求逻辑异或 0 xor 0->0 1 xor 1->0 1 xor 0->1
bitop xor abxor a b
123456789101112131415161718192021
3、统计指定位区间上值为1的个数
使用格式1:
BITCOUNT key [start] [end]
从左向右从0开始,从右向左从-1开始,
注意:官方start、end是位,测试后是字节
使用格式2:
BITCOUNT testkey 0 0
表示从索引为0个字节到索引为0个字节,也就是指对第一个字节的统计
注意:
BITCOUNT testkey 0 -1 等同于BITCOUNT testkey
我们最常用的格式就是 BITCOUNT testkey
1234567891011
Redis的 key 值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如”foo”的简单字符串到一个JPEG文件的内容都可以。空字符串也是有效key值。
Key取值原则:
- 键值不需要太长,太长会消耗内存,且在数据中查找这类键值的计算成本较高
- 键值不宜过短,过短则可读性较差
1、String字符串
字符串是一种最基本的Redis值类型。Redis字符串是二进制安全的,这意味着一个Redis字符串能包含任意类型的数据;并且一个字符串类型的值最多能存储512M字节的内容。
2、 List列表
List列表是基于Linked List实现的,列表中的元素是字符串类型;而列表的头尾增删速度快,中间增删速度慢,正常使用过程中增删元素是常态,列表中元素可以重复出现,并且列表中最多能包含2^32-1个元素;列表的索引,从左至右,从0开始;从右至左,从-1开始
(1)注意:
命令说明:
B --》block 块,阻塞
L --》left 左
R --》right 右
X --》exist 存在
1234567
(2)左右(或者头尾)压入元素
左(头)压入元素:
格式: LPUSH key value [value ...]
举例: LPUSHX key value
左(头)压入元素:
格式:RPUSH key value [value ...]
举例:RPUSHX key value
12345678