欢迎来到 绥化市某某化品售后客服中心
全国咨询热线:020-123456789
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

新闻中心
Redis的数据结构之bitmap
  来源:绥化市某某化品售后客服中心  更新时间:2024-04-27 23:13:52

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




友情链接ColorOS 13系统发布,我们来快速了解一下,看看有哪些新鲜玩法公认性价比高3款新机,钱少性能强,别再花冤枉钱了苹果品牌LOGO为什么会有一个被咬的缺口设计?来自乔布斯的原因奇瑞新能源小蚂蚁,科技配置已越级华为可变光圈专利已获授权当虹科技成立视听科技公司,经营范围含虚拟现实设备制造小米米家无线洗车机上线众筹:一键切换泡沫 / 喷洒,众筹价399元联想问题区块链定义未来关于最近任正非内部文章的两点思考“虎小叔说车”帮特斯拉“维权”?实则为了流量红利你知道太阳能电池板是如何发电的吗?中兴远航30S新机正式开售:搭载国产自研6nm U车机系统流量是移动的还是联通的?3.5K-4K手机如何选?看这篇文章就够啦比亚迪的云服务平台挺喜欢的“合成”小鼠胚胎问世 无需子宫便可直接孕育出大脑和心脏盘点各手机系统,看完这一篇的优劣势苹果发布会:iPhone 14 Pro系列配置全方位重大升级,你会买吗?Web3日报 0828腾讯会议崩了?官方回应:使用量激增致部分用户登录受影响ZOL科技早餐:小米12S Ultra影像得分不及上代,iPhone SE 4爆料量子纠缠的原理是什么?为什么能超光速1万倍?爱因斯坦无法理解美国戴尔公司发言人:已停止在俄罗斯的所有业务下场自研4680电池,蔚来是打算从特斯拉手里抢饭碗?开源月刊《HelloGitHub》第 77 期便宜不代表体验差!这4款高性价比手机,流畅使用三年不是问题52个Martech关键词:物联网靠实业“行大运”,远勤山的“野心”不只是远航新能源汽车未来是否是自然灾害的罪魁祸首三星One UI 5.0新增RAM Plus关闭选项,允许停用虚拟内存功能小米手环七Pro 到底怎么样 独立GPS 运动不依赖手机哪吒U购车指南:续航400KM+售12.38万!值不值得入手?腾云忆想技术干货|TSF微服务治理实战系列(二)——服务路由丰田标,比亚迪芯?丰田bZ3要来了,还有优势吗?安卓?还是苹果?换手机前的一些小建议,分享大数据扫黄,是如何发现“你”的?网友:看完涨知识了微信输入法要来了!腾讯申请微信输入法商标,网友:这安装包是不是更大了华为mate50系列爆出新配色Web3之路——如何用0x API建立一个Token交换Dapp
联系我们

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

电话:020-123456789

传真:020-123456789

邮箱:admin@aa.com

0.239

Copyright © 2024 Powered by 绥化市某某化品售后客服中心   sitemap