Redis使用学习汇总(八)之位图

Redis数据结构:位图


位图(bitmap)是由多个二进制位组成的数组,数组中每个二进制位都有与之对应的偏移量(或称索引),用户可通过偏移量对位图中指定的一个或多个二进制位进行操作。


数据结构

  • 位图
    在这里插入图片描述

位图

  • 设置位图中二进制位的值
    1.setbit命令  格式:setbit key offset value
    为位图中指定偏移量的二进制位设置值,设置后返回被设置之前的旧值(若未设置过默认初始化为0),偏移量只能为正。
    setbit key offset value
    在这里插入图片描述

  • 获取二进制位的值
    1.getbit命令  格式:getbit key offset
    获取位图指定偏移量上二进制位的值,偏移量也只能为正数,若位图不存在偏移量超过位图最大偏移量返回0。
    getbit key offset
    在这里插入图片描述

  • 统计被设置过的二进制位数量
    1.bitcount命令  格式:bitcount key [start end]
    统计位图中有多少个二进制位被设置为1。start、end指字节索引值而非位索引值,一个字节有8位,start、end为闭区间。start、end可以取负数,代表倒数字节。
    bitcount key [start end]
    在这里插入图片描述

  • 查找位图中第一个被设置的二进制位
    1.bitpos命令  格式:bitpos key bit [start] [end]
    在位图中查找第一个被设置为指定值的二进制位并返回其偏移量。start、end指字节索引值而非位索引值,一个字节有8位,start、end为闭区间。start、end可以取负数,代表倒数字节,若范围内未查找到1返回-1。位图不存在时也返回-1
    bitpos key bit [start] [end]
    在这里插入图片描述

  • 二进制位运算
    1.bitop命令  格式:bitop operation destkey key [key …]
    对一个或多个位图进行二进制位运算,运算结果存储到指定键中,operation可为AND、OR、XOR、NOT,分别为与、或、异或、非,NOT只允许一个位图参与运算,命令执行后返回被存储位图的字节长度。
    bitop operation destkey key [key ...]
    在这里插入图片描述

  • 位图中存储整数值
    在位图的指定区域存储指定长度的整数值,并对这些整数值执行加法或减法运算。
    bitfield key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL]
    1.bitfield的set命令  格式:bitfield key SET type offset value
    在位图的指定偏移量设置一个type类型的整数值,offset为起始偏移量也可前加#表示索引,type用于指定被设置值类型,以i或u为前缀后跟位长度,i表示设置为有符号整数,u表示设置为无符号整数,最大为i64和u63,若value超过type指定则截断。命令返回旧值作为执行结果。
    bitfield key SET type offset value
    在这里插入图片描述
    2.bitfield的get命令  格式:bitfield key GET type offset
    获取区域存储的值。
    bitfield key GET type offset
    在这里插入图片描述
    3.bitfield的incrby命令  格式:bitfield key INCRBY type offset increment
    执行加法或减法运算,执行完成后返回整数当前值。
    bitfield key INCRBY type offset increment
    在这里插入图片描述
    4.bitfield的overflow命令  格式:bitfield key OVERFLOW WRAP|SAT|FAIL
    控制incrby命令发生溢出时的行为,WRAP表示采用回绕方式(incrby默认采用),即向上溢出的整数值从类型的最小值重新计算而向下溢出的整数值从类型的最大值重新计算,SAT表示采用饱和运算,即向上溢出的整数值设置为类型最大值而向下溢出的整数值设置为类型最小值,FAIL表示拒绝,即直接失败返回空值。
    bitfield key INCRBY type offset increment OVERFLOW WRAP|SAT|FAIL
    在这里插入图片描述

  • 使用字符串命令操作位图
    位图键可看做字符串键,可以使用字符串命令操作位图。
    在这里插入图片描述

  • 常见用法
    1.用户行为记录(某一事件执行/未执行)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值