2016-08-17 41 views
0

我在redis中使用BITOP命令。 http://redis.io/commands/bitop。 當使用段命令波紋管:在比較兩個字符串的布爾操作時,如何在Redis中使用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回報(整數)6?它是密鑰dest的長度。爲什麼鍵dest的結果是"'bc'ab"。因爲在數學理論中,我從來沒有見過兩個字符串之間的AND操作。任何人都可以解釋我的方式來和兩個字符串?非常感謝 !

回答

2

BITOP命令對您提供的任何字符串的二進制表示進行按位運算。

爲什麼BITOP AND dest key1 key2 return(integer)6?它是關鍵目標的長度

是的。從DOC:

返回值 整數回覆 存儲在目的地鍵的字符串的尺寸,即等於最長輸入字符串的大小。

我從來沒見過兩個字符串之間的AND操作。任何人都可以解釋我的方式來和兩個字符串?

AND或兩個字符串之間的任何按位操作意味着這些字符串的二進制表示之間的相同操作,並且如果字符串在其二進制表示中長度不等,則較短的字符串在左側用零填充以匹配較大字符串(也在redis BITOP中完成)。

「foobar的」和「ABCDEF」的二進制表示法(爲清楚起見空格):

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

現在,你可以對其進行任何位運算,然後將所得位轉換爲字符串表示。