searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

redis bitmap类型

2024-10-10 02:06:21
1
0

1.bitmap(位图)

Redis中的位图不是一种实际的数据类型,而是一组定义在字符串类型上的位操作,这些字符串被当作位向量来处理。由于字符串是二进制安全的块,并且其最大长度为512MB,因此它们非常适合设置多达2^32的不同位。

我们可以对一个或多个字符串执行位操作,使用位图不仅可以极大的节省空间,并且在统计和计算方面十分便捷好用

2.常用命令

  • SETBIT:设置位图中指定偏移量
  • GETBIT:获取位图中指定偏移量的值
  • BITPOS:找出字符串中首个指定的值的偏移量
  • BITCOUNT:计算位图中值为1的个数
  • BITOP:对位图进行AND、OR、XOR、NOT等操作

3.场景示例

假如有个ip分配的场景,普通做法每个ip存一条string记录或者使用字节存储,以ipv4为例,一个ip占用的空间大小至少是4字节。但是使用位图的话,只需要通过计算ip的偏移值,将对应的位图位置设,相同的大小的4字节空间可以存32个分配记录。ip的分配通常都有独占要求,即一个ip同一个时间是能分配一次,这样就有了查找空闲ip的需求,使用BITPOS可以便捷地获取空闲ip,通过BITCOUNT可以计算ip的分配数量。另外,还可以通过与或非等位操作,方便地得到已分配的ip与目标的ip,如禁用ip的交集

0条评论
0 / 1000
陈****发
4文章数
0粉丝数
陈****发
4 文章 | 0 粉丝
原创

redis bitmap类型

2024-10-10 02:06:21
1
0

1.bitmap(位图)

Redis中的位图不是一种实际的数据类型,而是一组定义在字符串类型上的位操作,这些字符串被当作位向量来处理。由于字符串是二进制安全的块,并且其最大长度为512MB,因此它们非常适合设置多达2^32的不同位。

我们可以对一个或多个字符串执行位操作,使用位图不仅可以极大的节省空间,并且在统计和计算方面十分便捷好用

2.常用命令

  • SETBIT:设置位图中指定偏移量
  • GETBIT:获取位图中指定偏移量的值
  • BITPOS:找出字符串中首个指定的值的偏移量
  • BITCOUNT:计算位图中值为1的个数
  • BITOP:对位图进行AND、OR、XOR、NOT等操作

3.场景示例

假如有个ip分配的场景,普通做法每个ip存一条string记录或者使用字节存储,以ipv4为例,一个ip占用的空间大小至少是4字节。但是使用位图的话,只需要通过计算ip的偏移值,将对应的位图位置设,相同的大小的4字节空间可以存32个分配记录。ip的分配通常都有独占要求,即一个ip同一个时间是能分配一次,这样就有了查找空闲ip的需求,使用BITPOS可以便捷地获取空闲ip,通过BITCOUNT可以计算ip的分配数量。另外,还可以通过与或非等位操作,方便地得到已分配的ip与目标的ip,如禁用ip的交集

文章来自个人专栏
开发者的那些小经验
4 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0