?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
BITOP operation destkey key [key ...]
自2.6.0起可用。
時(shí)間復(fù)雜度: O(N)
在多個鍵(包含字符串值)之間執(zhí)行按位操作并將結(jié)果存儲在目標(biāo)鍵中。
BITOP 命令支持四個按位運(yùn)算:AND,OR,XOR和NOT,因此調(diào)用該命令的有效形式為:
BITOP AND destkey srckey1 srckey2 srckey3 ... srckeyN
BITOP OR destkey srckey1 srckey2 srckey3 ... srckeyN
BITOP XOR destkey srckey1 srckey2 srckey3 ... srckeyN
BITOP NOT destkey srckey
正如你可以看到,NOT 是特殊的,因?yàn)樗恍枰粋€輸入鍵,因?yàn)樗鼒?zhí)行比特反轉(zhuǎn),所以它只作為一元運(yùn)算符有意義。
操作結(jié)果始終存儲在destkey
。
當(dāng)在具有不同長度的字符串之間執(zhí)行操作時(shí),比集合中最長的字符串短的所有字符串被視為零填充到最長字符串的長度。
對于不存在的密鑰也是如此,這些密鑰被視為零字節(jié)流直到最長字符串的長度。
整數(shù)回復(fù)
存儲在目標(biāo)密鑰中的字符串的大小,即等于最長輸入字符串的大小。
redis> SET key1 "foobar" "OK"
redis> SET key2 "abcdef" "OK"
redis> BITOP AND dest key1 key2 (integer) 6
redis> GET dest "`bc`ab"
BITOP 對 BITCOUNT 命令文檔中記錄的模式有很好的補(bǔ)充。可以組合不同的位圖以獲得執(zhí)行總體計(jì)數(shù)操作的目標(biāo)位圖。
查看名為“ 使用Redis位圖的快速簡單實(shí)時(shí)指標(biāo) ”的文章,了解一些有趣的用例。
BITOP 是一個可能很慢的命令,因?yàn)樗贠(N)時(shí)間運(yùn)行。對長輸入字符串運(yùn)行時(shí)應(yīng)小心。
對于涉及大量輸入的實(shí)時(shí)指標(biāo)和統(tǒng)計(jì)信息,一種好的方法是使用一個從屬(禁用只讀選項(xiàng))的位置執(zhí)行位操作,以避免阻塞主實(shí)例。