欢迎来到 绍兴市某某电气客服中心
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
Redis的数据结构之bitmap
  来源:绍兴市某某电气客服中心  更新时间:2024-04-27 17:51:13

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




友情链接流放之路3.0游侠追猎者廉价强力打宝BD分享dnf男气功pk加点:DNF男气功PK加点攻略dnf独立攻击力有什么用-独立攻击力作用介绍找个好玩的手游游戏推荐2023 热门的好玩手游前十名分享料理餐厅小屋手游下载游戏专区问道雷霆版《LOL》无限火力拉克丝怎么出装 无限火力拉克丝出装推荐为什么职业比赛的女枪从来不出穿甲流?TBC怀旧服猎人超速被修复 锻造锤成新BIS装《传奇之梦合击版》1.85英雄合击版新区一剑诛仙洛奇英雄传杖娘加点 【洛奇英雄传】杖娘加点攻略【TBC攻略】燃烧的远征坐骑获取大全(下)2024最新安卓单机游戏(已分类带破解)如何评价火影忍者新时代——《博人传》?漫话周热点 TB7更新BUG泛滥 外传职业二觉CG拼多多的“砍一刀”到底有多坑?网友:6万人可以在乌克兰砍下基辅,却砍不下拼多多一部手机...《魔兽争霸3冰封王座》百变英雄v1.5.0正式版dnf散打110版本怎么搭配-散打110版本装备搭配攻略【黑龙江】DNF第三届格斗大赛最后海选DNF极限祭坛逐图解析攻略 精英怪及BOSS攻击特性及相关技巧魔兽争霸3自定义修改字体教程_魔兽争霸3对战快捷按键汇总LOL云顶之弈拉面熊搭配推荐 雷霆咆哮拉面熊怎么搭配奇迹手游私sf哪一款最好 奇迹手游私sf2023十大排行无尽黑暗之刃,无尽黑暗之刃触发Dota AI CN Final下载手游变态版app平台盒子推荐寄生前夜3第三次生日dnf忍者残影流怎么玩 忍者残影流全介绍大学想买一台平板,是买二手的iPad还是全新的安卓?魔兽世界怀旧服扎拉赞恩任务完成方法梦幻西游:10级小号出了130的专用不磨链子,升级成本比装备价值高正在阅读:极速飞驰!《极品飞车16》游戏配置推荐极速飞驰!《极品飞车16》游戏配置推荐帮众须知问道手游帮派功臣奖励攻略2265安卓网LOL:羊驼排位秀黑科技 新偷钱成卢锡安神器新款网游推荐2023 高人气的网络游戏下载合集《魔兽世界怀旧服》火焰节buff怎么获得 火焰节buff获得方法十大免费手游平台app排行TBC怀旧服:开荒海山必备的三件最强物品,全部产自60年代!HSk考试六级样卷 05
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.2083

Copyright © 2024 Powered by 绍兴市某某电气客服中心   sitemap