欢迎来到 宁波市某某化工涂料销售部
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
Redis的数据结构之bitmap
  来源:宁波市某某化工涂料销售部  更新时间:2024-05-02 04:14:17

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




友情链接华山有什么好玩的?华山有什么景点?华山旅游攻略_文章内容三国志10——攻略分享值得收藏的王国保卫战前线超全攻略(新手必备的王国保卫战前线玩法)新倚天屠龙记新手攻略 新手怎么开荒好新剑侠情缘攻略之攻城战(新剑侠情缘攻城战有哪些规则)河南5日游攻略自由行,龙门石窟游玩精品路线五日游多少钱[攻略]【图文攻略】三国志13威力加强版《英雄志》四一居士十年天下一统<终极攻略>------任何剧本通用策略官居几品会试答案攻略(官居几品乡试答案攻略)DOTA2 发条进阶攻略 控制拉满轻松上分延禧攻略剧情介绍杭州自助游明日方舟 | 公开招募全攻略(含公开限定干员)官居几品势力(官居几品正五品攻略)梦幻新诛仙:大神干货!洞天探秘小技巧分享梦幻新诛仙游戏攻略技巧分享倚天屠龙记v7.0通关攻略?(倚天屠龙记v7.2攻略)战就战 正式版下载v3.1b小攻略——Minecraft BE 1.11版本新村民职业对应表「一个月的战争」模匠模型网络赛 赛制及报名参赛全攻略指南《东京攻略粤语剧情电影》免费观看《最终幻想7 重制版》最高机密任务打法攻略日本樱花季:春风十里,我在樱花树下等你新剑侠情缘剧情攻略《DOTA2》7.33版本,T0一号位风行者出装攻略弓箭传说装备有哪些 弓箭传说装备大全攻略《新倩女幽魂》红楼家宴即将上线 “红楼印象”打卡坐标攻略口袋妖怪绿宝石详细图文攻略文档资料为幻想三国志2uj学院攻略-幻想三国志2战乱乱世《三国志7》攻略最强蜗牛栴檀攻略汇总 栴檀剧情、获取与使用指南杭州美食攻略带你去吃地道的美味玩转杭州新三国志英杰传全攻略(免费)-Dota2新版本影魔加点与出装攻略三国志2017怎么增加武将兵力 三国志城防军用多少器械兵力合适最终幻想7:重制版玩家圈子弓箭传奇手游攻略大全最新版本新剑侠情缘攻略万花怎么加技能点,新手攻略最美最好的张柏芝,只有它拍了出来原神【任务攻略】提纳里传说|详解攻略
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.1707

Copyright © 2024 Powered by 宁波市某某化工涂料销售部   sitemap