返回字符串里面第一个被设置为1或者0的bit位。

返回一个位置,把字符串当做一个从左到右的字节数组,第一个符合条件的在位置0,其次在位置8,等等。

GETBIT 和 SETBIT 相似的也是操作字节位的命令。

默认情况下整个字符串都会被检索一次,只有在指定start和end参数(指定start和end位是可行的),该范围被解释为一个字节的范围,而不是一系列的位。所以start=0 并且 end=2是指前三个字节范围内查找。

注意,返回的位的位置始终是从0开始的,即使使用了start来指定了一个开始字节也是这样。

和GETRANGE命令一样,start和end也可以包含负值,负值将从字符串的末尾开始计算,-1是字符串的最后一个字节,-2是倒数第二个,等等。

不存在的key将会被当做空字符串来处理。

返回值

Integer reply

命令返回字符串里面第一个被设置为1或者0的bit位。

如果我们在空字符串或者0字节的字符串里面查找bit为1的内容,那么结果将返回-1。

如果我们在字符串里面查找bit为0而且字符串只包含1的值时,将返回字符串最右边的第一个空位。如果有一个字符串是三个字节的值为0xff的字符串,那么命令BITPOS key 0将会返回24,因为0-23位都是1。

基本上,我们可以把字符串看成右边有无数个0。

然而,如果你用指定start和end范围进行查找指定值时,如果该范围内没有对应值,结果将返回-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个字节开始的位置
(integer) 8
redis> BITPOS mykey 1 2 # 查找字符串里面bit值为1从第2个字节(12)开始的位置
(integer) 16
redis> set mykey "\x00\x00\x00"
OK
redis> BITPOS mykey 1 # 查找字符串里面bit值为1的位置
(integer) -1
redis>

本文作者:陈群
本文来自云栖社区合作伙伴rediscn,了解相关信息可以关注redis.cn网站。

BITPOS key bit [start] [end]相关推荐

  1. 数据类型_分享redis中除5种基础数据类型以外的高级数据类型

    众所周知,在redis中的数据类型有String(字符串).hash(哈希).list(列表).set(集合).zset(有序集合)五种.但在这5种之外还有高级数据类型. 今天和大家介绍下常用的高级数 ...

  2. Redis 04_位图bitmap

    位图bitmap    [字节数组] 位图不是真正的数据类型,它是定义在字符串类型中 一个字符串类型的值最多能存储512M字节的内容 位上限:2^(9+10+10+3)=2^32b  --命令 设置某 ...

  3. Redis 基本操作

    Redis 基本操作 参考:An introduction to Redis data types and abstractions 中文翻译:看云 Redis命令查询:Command Referen ...

  4. 3、数据类型一:strings

    题外: 学习过程参考三份资料:<Redis入门指南>.<Redis实战>.http://redis.io 后面的学习笔记中会引入它们的内容或代码,在这里统一说明,后面笔记中便不 ...

  5. redis 中一个字段 修改map_Redis bitmap 位图 从入门到精通 基础 实战 妙用

    1.bitmap介绍 位图不是真正的数据类型,它是定义在字符串类型中,一个字符串类型的值最多能存储512M字节的内容 位上限:2^(9(512)+10(1024)+10(1024)+3(8b=1B)) ...

  6. 跟我一起学Redis之看完这篇比常人多会三种类型实战(又搞了几个小时)

    前言 对于Redis而言,很多小伙伴只关注其关键的五大基础类型:string.hash.list.set.sorted set(有序集合),其实还有三种特殊类型在很多应用场景也比较适合使用,分别是:b ...

  7. Redis—字符串和SDS

    一.字符串 字符串的实现代码在sds.c和sds.h文件中. 1.1 字符串介绍 字符串是Redis中最为常见的数据存储类型,其底层实现是简单动态字符串sds(simple dynamic strin ...

  8. Redis 中 BitMap 的使用场景

    BitMap# BitMap 原本的含义是用一个比特位来映射某个元素的状态.由于一个比特位只能表示 0 和 1 两种状态,所以 BitMap 能映射的状态有限,但是使用比特位的优势是能大量的节省内存空 ...

  9. Redis五种数据类型介绍

    概述 Redis的键值可以使用物种数据类型:字符串,散列表,列表,集合,有序集合.本文详细介绍这五种数据类型的使用方法.本文命令介绍部分只是列举了基本的命令,至于具体的使用示例,可以参考Redis官方 ...

最新文章

  1. ps光效插件_全套光效PS插件(2019),只有你想不到的,没有它做不到的PS特效...
  2. linux变量中代,linux中shell变量$#,$@,$0,$1,$2和变量${0%/*}
  3. hive外部表改为内部表_hive内部表外部表介绍
  4. 一个有趣的问题,讨论讨论
  5. 我的处女作《设计模式之禅》——前言
  6. android取消自动调试模式吗,Android进入调试模式的三种技巧
  7. C语言 结构体 struct Cat cat1;
  8. 浅谈K短路算法(KSP)之二(YEN .J算法求解)
  9. Jenkins 部署 jmeter + Ant
  10. 全志 Allwinner V3S 开发环境搭建 (一)虚拟机搭建 Oracle VM VirtualBox6.1 Ubuntu14.4
  11. MQL5 信号的优势
  12. Win10系统下CUDA10.0的安装
  13. oracle normsinv函数,统计函数NormSDist和NormSInv函数实现
  14. logstash: Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread “
  15. 微信注册崩溃?appid签名无法注册or如何查看签名是否一致?如何注册appid?jks和keystore的区别?
  16. violate 修饰的用法
  17. 编写程序求反正弦函数近似值
  18. hive表新增字段和字段注释修改
  19. android官网m魅族15,魅族15亮相安卓官网 圆形Home键设计
  20. 实验9-5 查找书籍 (20 分)

热门文章

  1. python 线程中出现执行错乱_多处理会导致Python崩溃,并在调用fork()时在另一个线程中出现错误...
  2. 毕业论文选题三步搞定!
  3. 映射递归循环-约瑟夫环问题递归解法的一点理解
  4. python教程怎么读_python怎么读本地文件
  5. LabVIEW2018安装教程
  6. 神经网络 | BP神经网络介绍(附源代码:BP神经网络-异或问题)
  7. 安装 | R2021a链接及Matlab运行图
  8. 项目开发时前端及数据库遇到的问题
  9. 一些常规形几何形状的绘制和效果填充(一)
  10. docker安装php怎么修改配置,怎么给docker配置内存大小?