欢迎来到 铜川市某某钢球股份业务部
全国咨询热线:020-123456789
联系我们

地址:联系地址联系地址联系地址

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
Redis的数据结构之bitmap
  来源:铜川市某某钢球股份业务部  更新时间:2024-05-03 19:31:05

Redis的数据结构之bitmap

背景

项目开发过程中 ,数据我们经常会使用boolean类型来存储数据 。结构例如记录用户每天签到,数据签到了是1,没签则为0,结构如果我们需要统计一年内的数据签到数 ,如果采用String来存储 ,结构需要每个用户都要记录 365次,数据当用户数量非常大时,结构需要的存储空间非常巨大。为了解决这个问题 ,数据Redis提供了位图数据结构来解决此问题  。结构

简介

bitmap简称位图 ,数据是结构由多个二进制位组成的数组,数组中的数据每个二进制位都有与之对应的偏移量,可以通过这些偏移量对位图中指定的结构一个或多个二进制位进行操作。

数据结构

Redis的数据结构之bitmap

说明:位图也可以看作一个字节数组,索引序号代表对应的值,bitmap默认值都为0

基础命令

Redis的数据结构之bitmap

setbit 设置二进制位的值

基本语法

setbit key offset valuen

注意 :设置bit值时,其中offset的值不能为负数 ,否则会报ERR bit offset is not integer or out of range错误 。

示例说明

将位图mbit设置为:10010100

#设置第一个位置为1n setbit mbit 0 1 n #设置第四个位置为1n setbit mbit 3 1 n #设置第六个位置为1n setbit mbit 5 1 n

位图的变化过程

Redis的数据结构之bitmap

位图的扩展

当用户执行setbit命令时,如果位图不存在 ,或者位图当前的大小无法满足用户想要执行的设置操作 ,那么Redis将对被设置的位图进行扩展 ,使得位图可以满足用户的设置请求 。

例如用户执行如下命令 :

setbit mbit 10 1n

Redis创建出的位图并不是只有11个二进制位,而是有两个字节共16个二进制位 ,如下图所示。

Redis的数据结构之bitmap

说明:从个图我们也可以看到,除了偏移量为10的二进制位之外 ,其他所有未被设置的二进制位都被初始化成了0。

getbit 获取二进制位的值

基本语法

getbit key offsetn

示例

Redis的数据结构之bitmap

bitcount 统计被设置的二进制位数量

基本语法

bitcount key start endn

示例

Redis的数据结构之bitmap

bitop 对一个或多个保存二进制位的字符串 key 进行位元操作

基本语法

bitop and key1 key2n

说明: bitop 命令支持 and、or、not、xor这四种操作

  • and: 与运算符(&) 两个同时为1,结果为1 ,否则为0
  • or: 或运算(|) 一个为1,其值为1
  • not: 取反(0110 0001 NOT: 1001 1110)
  • xor: 异或运算,值不同为1,否则为0

示例

Redis的数据结构之bitmap

bitpos 用来查找指定范围内出现的第一个 0 或 1 (字节为单位)

基本语法

bitpos key start endn

示例

Redis的数据结构之bitmap

应用场景

  • 1.用户签到次数

1 代表签到 ,0 代表未签到 ,这样可以很轻松地统计出用户的活跃程度。相比于直接使用字符串而言 ,位图中的每一条记录仅占用一个bit位 ,从而大大降低了内存空间使用率 。

2.统计登录次数

总结

本文讲解了位图的基本数据结构和操作命令 ,位图适合于一些特定的场景  ,我们需要集合实际的业务场景情况 ,选择合适的数据结构存储能够大大的降低Redis的内存空间。




友情链接英雄联盟艾克怎么出装教你如何用衬线做字体三国杀国战变包浅析第九章上(左慈)洛克王国射手座光灵石怎么得到火炬之光2法师加点攻略:掌握技能加点策略诛仙三抓宝宝攻略,诛仙怎么抓宝宝啊DNF歧路流剑宗玩法介绍 歧路流剑宗厉害吗DNF遥远的思念活动 使用给哥哥的信奖励一览英雄联盟s11乌迪尔装备怎么搭配 s11乌迪尔装备搭配攻略怀旧服巫妖王之怒法师天赋怎么加-80级法师天赋加点方案lol:眩晕最长的是寒冰,击飞最长的是石头,位移最多的呢?命运方舟跑岛攻略 跑岛顺序路线图一览王者荣耀:打日之塔最快的英雄,不是后羿,也不是孙策,而是他!永生幽暗手套,暗影爆发手套和永生幽暗手套 哪一个更适合爪锤贼[三国杀]神姜维武将自制可玩性与强度是否合理?教你杀巨龙 梦幻西游2雷怒之战副本最强攻略出炉《泰拉瑞亚》1.4.4.9饰品搭配推荐 最强饰品组合分享道法会元卷之七十九蜗牛睡眠 app破解版v4.3.9寻龙诀倒计时发布会 陈坤电眼迷倒女记者《幼学琼林》卷一:天文(风雨雷电)王者荣耀s26更新公告 王者荣耀s26更新要点一览白求恩大夫app患者端下载即使是班主任,玩弄我(网游)老公的感情的话,我绝不饶恕!【味道泊里】二月二吃糖豆手机十大耐玩单机游戏有哪些 经典的单机游戏前十名2023lol英雄联盟手游内测安卓资格申请 菲律宾谷歌账号预注册教程《魔兽世界怀旧服》神圣骑天赋如何加点wow黑市在哪-黑市位置攻略英雄联盟手游测试资格分享DNF暖冬献好礼,每日在线30分钟,即可获得黑钻精炼及强化增幅器复古传奇世界:1.85合击英雄版,新服来袭安卓平板中性价比最高的你推荐哪一款?sky光遇游戏攻略 sky光遇各冥想地点详细介绍小程序仙剑奇侠传之新的开始最全兑换码合集(15个官方可用礼包码)英雄联盟手游日服代充软件下载DNF2015国庆套外观曝光 DNF全职业国庆套外观一览DNF100级混沌魔灵装备怎么选 DNF混沌魔灵装备选择介绍洛克王国射手座光灵石怎么得到鬼泣5存档在哪个文件夹
联系我们

地址:联系地址联系地址联系地址

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.4082

Copyright © 2024 Powered by 铜川市某某钢球股份业务部   sitemap