欢迎来到 忻州市某某涂装工程培训中心
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
Redis的数据结构之bitmap
  来源:忻州市某某涂装工程培训中心  更新时间:2024-05-08 18:56:10

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的内存空间。




友情链接地灵党看过来 DNF大转移完美地灵仓库堆满方法[碳中和] 低能耗技术之把厌氧氨氧化说清楚英雄联盟魔腾是什么英雄,上古战魂 魔腾是什么英雄《守望》全新社交功能 寻求队伍赞赏系统可升级TBC灵纹外套在哪里学(TBC裁缝375怎么快速充满)万界大融合:开局神提示系统 第五十八章第三灾结束,万界大融合开始!(3/5)《我的勇者》炎魔BOSS要怎么打 炎魔BOSS打法攻略cf荣誉点有啥用,CF荣誉点是什么英雄联盟全球总决赛S10将在上海开赛,海外战队已抵沪隔离《光遇》在水母上恢复能量完成方法 8.2任务雨林神庙内冥想位置说明大一学习生活总结[70-生存][70-射击]猎人天赋请教《新三国志英杰传》英杰传宝物属性一览[整理版]dnf9月3日数字解密答案是什么 数字解谜活动答案一览dnf女圣职者4个转职哪个好《DNF》8月30日数字解密答案是什么 数字解密正确数字答案攻略海王电竞APP官网最新版 v1.16WOW厄运之槌入口位置(魔兽世界厄运之槌副本任务列表)《DNF》100级剑宗武器怎么选 100级剑宗最强武器选择推荐三国杀DIY界限突破系列⑨:司马懿·夏侯惇·夏侯渊·许褚·徐晃·新旧曹仁·SP曹仁·甄·张辽LOL手游2.2b螳螂到来之前用什么打野?赵信单人最佳上分选择梦幻西游:99个神兜兜换神兽忘记用灵兜兜,精彩老板空号13万卖出《天涯明月刀OL》丐帮门派技能资料《魔兽争霸3冰封王座》传奇之光v1.2.11正式版Mac上有什么实用的必备软件?天堂W/NC账号注册教程,野豹加速器助力提供免费加速服务!琴女怎么出装?《光遇》周年庆结束时间介绍《暗黑破坏神3》国服售价已经公布!距一线豪华品牌有多远,红旗品牌给出答案 中国汽车高端化解密LoL国服官方:全新系统【臻彩藏品】 可展示你的稀有皮肤《极品飞车19》11辆新车截图:超高画质腾讯安全中心的10道题答案 腾讯安全中心的10道题答案详情哪些加速器比较好用 好用的加速器有哪些《魔兽世界》黑市999万金的绝版物品 你有多少件还在包里LOL天赋加点养狗是一种怎样的体验?《原神》各地钓鱼点有多少?各地钓鱼点介绍DNF中文件对应的背景音乐王者荣耀黄忠暴击10000怎么出装 黄忠暴击出装顺序
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.2279

Copyright © 2024 Powered by 忻州市某某涂装工程培训中心   sitemap