BITPOS key bit [start] [end]
返回字符串里面第一個(gè)被設(shè)置為1或者0的bit位。
返回一個(gè)位置,把字符串當(dāng)做一個(gè)從左到右的字節(jié)數(shù)組,第一個(gè)符合條件的在位置0,其次在位置8,等等。
GETBIT?和?SETBIT?相似的也是操作字節(jié)位的命令。
默認(rèn)情況下整個(gè)字符串都會(huì)被檢索一次,只有在指定start和end參數(shù)(指定start和end位是可行的),該范圍被解釋為一個(gè)字節(jié)的范圍,而不是一系列的位。所以start=0?并且?end=2是指前三個(gè)字節(jié)范圍內(nèi)查找。
注意,返回的位的位置始終是從0開始的,即使使用了start來指定了一個(gè)開始字節(jié)也是這樣。
和GETRANGE命令一樣,start和end也可以包含負(fù)值,負(fù)值將從字符串的末尾開始計(jì)算,-1是字符串的最后一個(gè)字節(jié),-2是倒數(shù)第二個(gè),等等。
不存在的key將會(huì)被當(dāng)做空字符串來處理。
返回值
Integer reply
命令返回字符串里面第一個(gè)被設(shè)置為1或者0的bit位。
如果我們?cè)诳兆址蛘?字節(jié)的字符串里面查找bit為1的內(nèi)容,那么結(jié)果將返回-1。
如果我們?cè)谧址锩娌檎襜it為0而且字符串只包含1的值時(shí),將返回字符串最右邊的第一個(gè)空位。如果有一個(gè)字符串是三個(gè)字節(jié)的值為0xff的字符串,那么命令BITPOS key 0將會(huì)返回24,因?yàn)?-23位都是1。
基本上,我們可以把字符串看成右邊有無數(shù)個(gè)0。
然而,如果你用指定start和end范圍進(jìn)行查找指定值時(shí),如果該范圍內(nèi)沒有對(duì)應(yīng)值,結(jié)果將返回-1。
##例子
redis> SET mykey "\xff\xf0\x00" OK redis> BITPOS mykey 0 # 查找字符串里面bit值為0的位置 (integer) 12 redis> SET mykey "\x00\xff\xf0" OK redis> BITPOS mykey 1 0 # 查找字符串里面bit值為1從第0個(gè)字節(jié)開始的位置 (integer) 8 redis> BITPOS mykey 1 2 # 查找字符串里面bit值為1從第2個(gè)字節(jié)(12)開始的位置 (integer) 16 redis> set mykey "\x00\x00\x00" OK redis> BITPOS mykey 1 # 查找字符串里面bit值為1的位置 (integer) -1 redis>本文作者:陳群 本文來自云棲社區(qū)合作伙伴rediscn,了解相關(guān)信息可以關(guān)注redis.cn網(wǎng)站。
總結(jié)
以上是生活随笔為你收集整理的BITPOS key bit [start] [end]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue2.0-axios is defi
- 下一篇: 项目管理 - 学习总目录