欢迎来到 铁岭市某某化工涂料运营部
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
Redis的数据结构之bitmap
  来源:铁岭市某某化工涂料运营部  更新时间:2024-04-27 13:26:58

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




友情链接不做任务的传奇单职业手游下载(无任务单职业传奇手游大全)火影忍者:博人传之次世代继承者大结局看过《博人传BORUTO》的人还看过梦幻西游:玩家新区5+5技合宠,意外合出12技宝宝,成全区第一!羊了个羊小游戏第二关攻略 第二关怎么过极品飞车15:变速2妄想山海游侠小屋在哪 妄想山海游侠小屋位置魔兽世界怀旧服WLK那次我喝醉了之后任务完成攻略炉石传说暴风城招募战怎么玩 招募战玩法攻略魔兽世界哪些坐骑的掉落率高(蓝色幼龙的缰绳的出处在哪里)云顶之弈第二赛季英雄大全 S2全英雄图鉴技能属性羁绊出装 瘟疫之源王者荣耀日之塔怎么玩魔兽争霸3神之墓地地图 v3.8.66魔兽世界:暴雪更改TBC开放顺序,这些极品装备,或在P1就能拿到阿修罗固伤改版后 流派加点及技能分析2021网游单机版游戏下载排行榜2021前十名手游 好玩的网游单机游戏推荐魔兽世界怀旧服中你也可以穿着打扮各种幻化魔兽世界5.0工程学与考古新增物品介绍2014-08-27 17:05:27 来源: 评论:0 点击:《阴阳师》斗技排名显示设置流程攻略胰高血糖素样肽介导运动抗抑郁作用潜在机制.doc第一百六十八章 水雷灭星辰魔兽世界中蹲监狱角色大盘点 WOW哪些人物住过监狱魔兽世界祖尔格拉布掉落装备介绍 极品装备掉落列表介绍阴阳师体验服年兽副本式神强度 难度分析和掉落奖励一览我的世界手游简易小屋建造图文攻略英雄联盟手游隐藏任务触发条件介绍 隐藏任务怎么触发寻仙手游隐藏任务位置大全魔兽世界战士天赋加点详解英雄联盟鳄鱼怎么出装?lol手游鳄鱼有什么玩法技巧?纯甜小糖豆 茶淀玫瑰香葡萄返场啦!摩尔庄园手游邮箱在哪里?摩尔庄园内容介绍英雄联盟手游s11赛季什么时候结束问道手游帮派任务攻略卡德加回归后是否取代了吉安娜在肯瑞托的领导地位?魔兽世界怎么去潘达利亚副本任务攻略(潘达利亚五人副本成就龙地图详解)手柄游戏的完美解决方案:专业评测推荐杀6星天罡开5个星辰碎片,奖励有点香火炬之光2游戏专区魔兽怀旧TBC炼金图纸出处大全(拿了赚G)看到综合频道有人发送低价充值的消息,你会选择 王者荣耀夫子的进阶试炼答案
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.2597

Copyright © 2024 Powered by 铁岭市某某化工涂料运营部   sitemap