directory search
Cluster cluster addslots(集群 槽位) cluster count failure reports(集群计数失败报告) cluster countkeysinslot cluster delslots cluster failover cluster forget cluster getkeysinslot cluster info cluster keyslot(集群键槽) cluster meet cluster nodes(集群节点) cluster replicate(集群复制) cluster reset(集群重置) cluster saveconfig cluster set config epoch cluster setslot cluster slaves cluster slots readonly readwrite Connection auth echo ping quit select swapdb Geo geoadd geodist geohash geopos georadius georadiusbymember Hashes hdel hexists hget hgetall hincrby hincrbyfloat hkeys hlen hmget hmset hscan hset hsetnx hstrlen hvals HyperLogLog pfadd pfcount pfmerge Keys del dump exists expire expireat keys migrate move object persist pexpire pexpireat pttl randomkey rename renamenx restore scan sort touch ttl type unlink wait Lists blpop brpop brpoplpush lindex linsert llen lpop lpush lpushx lrange lrem lset ltrim rpop rpoplpush rpush rpushx Pub/Sub psubscribe publish pubsub punsubscribe subscribe unsubscribe Scripting eval evalsha script debug script exists script flush script kill script load Server bgrewriteaof bgsave client getname client kill client list client pause client reply client setname command command count command getkeys command info config get config resetstat config rewrite config set dbsize debug object debug segfault flushall flushdb info lastsave monitor role save shutdown slaveof slowlog time Sets sadd scard sdiff sdiffstore sinter sinterstore sismember smembers smove spop srandmember srem sscan sunion sunionstore Sorted Sets zadd zcard zcount zincrby zinterstore zlexcount zrange zrangebylex zrangebyscore zrank zrem zremrangebylex zremrangebyrank zremrangebyscore zrevrange zrevrangebylex zrevrangebyscore zrevrank zscan zscore zunionstore Strings append bitcount bitfield bitop bitpos decr decrby get getbit getrange getset incr incrby incrbyfloat mget mset msetnx psetex set setbit setex setnx setrange strlen Transactions discard exec multi unwatch watch
characters

BITPOS key bit [start] [end]

自2.8.7起可用。

时间复杂度: O(N)

将字符串中第一位的位置设置为1或0。

返回该位置,将字符串视为从左到右的位数组,其中第一个字节的最高有效位位于位置0,第二个字节的最高有效位位于位置8,等等。

GETBIT 和 SETBIT后面跟着相同的位位置约定。

默认情况下,检查字符串中包含的所有字节。可以仅在指定的时间间隔内查找位,并传递额外的参数 start end(可能只是传递start,操作会假定 end 是字符串的最后一个字节,但是存在语义差异后来)。的范围内被解释为范围的字节,而不是一比特的,所以start=0end=2装置看的前三个字节。

请注意,即使在使用开始结束来指定范围时,位位置也始终以从零位开始的绝对值的形式返回。

与 GETRANGE 命令类似,开始和结束可以包含负值,以便从字符串的末尾开始索引字节,其中-1是最后一个字节,-2是倒数第二个字符,等等。

不存在的键被视为空字符串。

返回值

整数回复

该命令根据请求返回第一位设置为1或0的位置。

如果我们查找设置位(位参数为1)并且字符串为空或仅由零字节组成,则返回-1。

如果我们查找清零位(位参数为0)并且该字符串仅包含位设为1,则函数返回第一位,而不是右侧字符串的一部分。因此,如果字符串是三个字节设置为该值,0xff该命令BITPOS key 0将返回24,因为直到位23,所有的位都是1。

基本上,函数认为字符串的权利,与你寻找明确位,没有指定范围或补零开始的说法

但是,如果您正在查找清除位并指定具有开始结束的范围,则此行为会发生变化。如果在指定范围内未找到清除位,则该函数返回-1,因为用户指定了一个清除范围,并且该范围内没有0位。

例子

redis>  SET mykey "\xff\xf0\x00" "OK" redis>  BITPOS mykey 0 (integer) 12 redis>  SET mykey "\x00\xff\xf0" "OK" redis>  BITPOS mykey 1 0 (integer) 8 redis>  BITPOS mykey 1 2 (integer) 16 redis>  set mykey "\x00\x00\x00" "OK" redis>  BITPOS mykey 1 (integer) -1

Previous article: Next article: