比较两个字符串的布尔运算时,redis 中的 BITOP 命令如何工作

How can BITOP command in redis working when compare boolean operation on two strings

我在redis中关注BITOP命令。 http://redis.io/commands/bitop。 在使用如下代码片段命令时:

redis> SET key1 "foobar"
OK
redis> SET key2 "abcdef"
OK
redis> BITOP AND dest key1 key2
(integer) 6
redis> GET dest
"`bc`ab"

为什么 BITOP AND dest key1 key2 return(整数)6?是不是key的长度dest。为什么键 dest 的结果是 "'bc'ab"。因为在数学理论中,我从未见过两个字符串之间的AND运算。谁能向我解释 AND 两个字符串的方法?非常感谢!

BITOP 命令对您提供的任何字符串的二进制表示进行按位运算。

为什么 BITOP AND dest key1 key2 return(整数)6?是key的长度 dest

是的。来自文档:

Return value Integer reply The size of the string stored in the destination key, that is equal to the size of the longest input string.

我没见过两个字符串之间的AND运算。谁能给我解释一下 AND 两个字符串的方法?

AND 或两个字符串之间的任何按位运算意味着这些字符串的二进制表示之间的相同操作,如果字符串的二进制表示长度不等,则较短的字符串在左侧用零填充以匹配较大的字符串字符串(也在redis BITOP中完成)。

"foobar" 和 "abcdef" 的二进制表示是(为清楚起见,使用空格):

"foobar" : 01100110 01101111 01101111 01100010 01100001 01110010 
"abcdef" : 01100001 01100010 01100011 01100100 01100101 01100110 

现在您可以对它们执行任何按位运算,然后将结果位转换为字符串表示形式。