当前位置:   article > 正文

Redis-bitmap 位图_redis的bitmaps位图

redis的bitmaps位图

Redis-bitmap 位图

在开发过程中,经常有一些bool型的值需要存储。

比如用户一年的签到记录,签了是1,没签是0。如果每个记录都用一个byte、short、int、boolean等基本类型结构去存储,那么占用的空间是很大的。

为了解决这个问题,Redis提供了位图结构,每个布尔记录只需要占用一个位,也就是一个bit。365天的签到记录只需要365位就可以存的下。

注意,位图并不是特殊的数据结构,它的内容就是普通的字符串内容

8位bit对应一个字符,我们可以在BITCOUNT操作中,明显地看出来。

基本用法

最常用的几个指令:

# 把当前key下的第offset位设置成value
SETBIT key offset value
# 获取指定key下的第offset位
GETBIT key offset
# 获取key中为1的计数,可加范围
# 注意 start和end的单位是字符
BITCOUNT key [start end]
# 查询在[strat, end]区间内,第一次出现bit值的坐标
BITPOS key bit [start end]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

指令示例

示例位数组:{ 0, 1, 0, 1, 1}

SETBIT

127.0.0.1:6379> SETBIT example 0 0
(integer) 0
127.0.0.1:6379> SETBIT example 1 1
(integer) 0
127.0.0.1:6379> SETBIT example 2 0
(integer) 0
127.0.0.1:6379> SETBIT example 3 1
(integer) 0
127.0.0.1:6379> SETBIT example 4 1
(integer) 0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

在这里插入图片描述

GETBIT

示例位数组:{ 0, 1, 0, 1, 1}

127.0.0.1:6379> GETBIT example 2
(integer) 0
127.0.0.1:6379> GETBIT example 3
(integer) 1
127.0.0.1:6379> GETBIT example 4
(integer) 1
127.0.0.1:6379> GETBIT example 1
(integer) 1

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述

BITCOUNT

示例数据 {0,0,0,0,0,0,0,1, 1,1,1,1,1,1,1,1}

注意(1字符-8位)的对应

# 查看全局的BITCOUNT
127.0.0.1:6379> BITCOUNT example
(integer) 9
# 查看第一个字符的BITCOUNT,即前0位
127.0.0.1:6379> BITCOUNT example 0 0
(integer) 1
# 查看第二个字符的BITCOUNT,即后8位
127.0.0.1:6379> BITCOUNT example 1 1
(integer) 8
# 查看前两个字符的BITCOUNT,即0-15位
127.0.0.1:6379> BITCOUNT example 0 1
(integer) 9

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这里插入图片描述

BITPOS

示例数据 {0,0,0,0,0,0,0,1, 1,1,1,1,1,1,1,1}

# 获得第一个出现1的下标
127.0.0.1:6379> BITPOS example 1 
(integer) 7
# 获得[1,1](字符)内,第一个出现1的下标
127.0.0.1:6379> BITPOS example 1 1 1
(integer) 8
# 获得[1,1](字符)内,第一个出现0的下标,结果不存在
127.0.0.1:6379> BITPOS example 0 1 1
(integer) -1
# 获得[0,1](字符)内,第一个出现0的下标
127.0.0.1:6379> BITPOS example 0 0 1
(integer) 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/382021
推荐阅读
相关标签
  

闽ICP备14008679号