Как команда BITOP в Redis работает при сравнении логической операции с двумя строками

Я следую команде BITOP в Redis. 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 возвращает (целое число) 6? Это длина ключа dest. И почему результатом ключа dest является "'bc'ab". Потому что в математической теории я никогда не видел операции И между двумя строками. Может ли кто-нибудь объяснить мне, как использовать И две строки? Спасибо большое !


person VanThaoNguyen    schedule 17.08.2016    source источник


Ответы (1)


Команда BITOP выполняет побитовые операции с двоичными представлениями любых строк, которые вы предоставляете.

Почему BITOP AND dest key1 key2 возвращают (целое число) 6 ? Это длина ключа назначения

Да, это так. Из документа:

Возвращаемое значение Целочисленный ответ Размер строки, хранящейся в целевом ключе, который равен размеру самой длинной входной строки.

Я никогда не видел операции И между двумя строками. Может ли кто-нибудь объяснить мне, как использовать И две строки?

И или любая побитовая операция между двумя строками означает одну и ту же операцию между двоичными представлениями этих строк, и если строки имеют неравную длину в их двоичном представлении, более короткие строки дополняются нулями слева, чтобы соответствовать большей строке (сделано в Redis БИТОП тоже).

Двоичные представления "foobar" и "abcdef" (пробелы для ясности):

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

Теперь вы можете выполнять над ними любую побитовую операцию, а затем преобразовывать полученные биты в строковое представление.

person DhruvPathak    schedule 17.08.2016