欢迎来到 陇南市某某环保机械设备教育中心
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
Redis的数据结构之bitmap
  来源:陇南市某某环保机械设备教育中心  更新时间:2024-05-05 13:30:47

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




友情链接三国杀OL十一重磅活动云顶之弈S11天龙索拉卡推荐 S11天龙索拉卡出装/羁绊运营攻略[多图]魔兽世界TBC 圣骑士带STSM最低装备和天赋WOW怀旧服的硬通货!无论金币如何贬,它们的价格都稳定!魔兽世界:战友招募正式开启 关于战友招募的攻略分析S4伊泽瑞尔天赋符文出装加点全攻略项羽会对等级高于自己的目标造成额外伤害?夫子的进阶试炼答案免费gm手游网站有哪些 最全gm版手游平台推荐魔兽世界怎么去潘达利亚的传送门(魔兽世界最全传送门指南)曹操传modh单机小游戏仙剑五激活码生成器 v1.0解析王者荣耀S19赛季什么时候开始 更新时间介绍三国杀共出了多少名武将?《天堂W》独享加速器推荐 工作室搬砖多开用【赛博】DNF:CP武器特色改版曝光!剑宗一刀斩强无敌,20+职业喜加强赛尔号卡鲁耶克怎么融 赛尔号卡鲁耶克融合要多少次DNF第四季时空之门召唤加点推荐及装备选择合集dnf白金徽章怎么得2022-白金徽章镶嵌哪里最划算LOL手游寒冰废了?数次削弱后还能再度上手,别忘了大招可以拐弯造梦西游3里面的土魔刺二级技能书哪里掉落? 造梦西游4手机版猪八戒技能怎么加点梦幻西游:收不着神兜兜为了给自己的神兽进阶,那么就只能自己开了直播预告丨上博讲坛第三季首讲:寻宋江南话宋瓷三国志战略版天王弓开荒 天王弓战法兵书和加点攻略极品飞车11:街道争霸 繁体中文完整硬盘版魔兽世界源生法力怎么获得 源生法力获取方法炉石传说狗贼现在用的卡组有哪些(狗贼 炉石)DNF刃影100级毕业装备怎么搭配?王者荣耀西施为什么能上高端局?口袋妖怪究极绿宝石5.5怎么改性格 精灵性格更改方法《奇迹暖暖》灵感期刊投稿步骤介绍变态游戏软件哪个最好 变态游戏软件app排行榜DNF迷你剑神属性怎么样 获得方法介绍dnf加体力的宝珠(DNF加体力的宝珠有哪些?)《英雄联盟手游》新手氪金建议 如何充值魔兽世界即将迎来15周年,各版本上线时间、内容、地图回顾DNF:谋略战排位总是输?5大使徒最强阵容,得一可平天下wow恐惧废土卡拉克西日常任务大全及攻略2014-08-28 10:50:54 来源: 评论:0 点击:王者荣耀五五朋友节返场皮肤2023
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.2214

Copyright © 2024 Powered by 陇南市某某环保机械设备教育中心   sitemap