Redis-新数据类型-Bitmaps

news2024/11/16 17:31:35

新数据类型-Bitmaps


简介

在计算机中,用二进制(位)作为存储信息的基本单位,1个字节等于8位。

例如 “abc” 字符串是由 3 个字节组成,计算机存储时使用其二进制表示,"abc"分别对应的ASCII码是 97、98、99,对应的二进制是01100001、01100010、01100011,在内存中表示如下:

在这里插入图片描述

合理地使用 位 能够有效地提高内存使用率和开发效率。

Redis提供了Bitmaps这个 “数据结构” 可以实现对位的操作:

  1. Bitmaps 本身不是一种数据结构,实际上它就是字符串(key 对应的 value 就是上图中的一串二进 制),但是它可以对字符串的位进行操作。

  2. Bitmaps 单独提供了一套命令,所以在 Redis 中使用 Bitmaps 和使用字符串的方法不太相同。可 以把 Bitmaps 想象成一个以位为单位的数组,数组的每个单元只能存储 0 和 1,数组的下标在 Bitmaps中叫做偏移量。

    在这里插入图片描述

常用命令

  1. setbit key offset value设置Bitmaps中某个偏移量的值。

    偏移量从0开始,且value值只能为0或1。

    setbit sign 0 1 设置sign的第一位值为1
    setbit sign 1 1 设置sign的第二位值为1
    setbit sign 2 0 设置sign的第三位值为0
    setbit sign 3 1 设置sign的第四位值为1
    
  2. getbit key offset 获取Bitmaps中某个偏移量的值。

    获取key的offset 的值。

    getbit sign 3 获取偏移量为3的值,结果为1
    

    在这里插入图片描述

    如果偏移量未设置值,则也返回0。

    getbit sign 99 获取偏移量为99的值,结果为0
    

    在这里插入图片描述

  3. bitcount key [start end]统计字符串被设置为1的bit数量。一般情况下,给定的整个字符串都会 被进行统计,可以选择通过额外的start和end参数,指定字节组范围内进行统计(包括start和 end),0表示第一个元素,-1表示最后一个元素。

    bitcount sign 获取整个字符串被设置为1的bit数量,结果为3
    

    如:当前存在一个key为k1的bitmaps存储着[00000001,00000001,00000010,00000011],分别对 应[1,1,2,3]。

    setbit num 7 1
    setbit num 15 1
    setbit num 22 1
    setbit num 30 1
    setbit num 31 1
    bitcount num 1 2 统计索引1、2两个字节组中bit=1的数量,即统计00000001,00000010中
    bit=1的数量,结果为2
    bitcount num 1 3 统计索引1、2、3三个字节组中bit=1的数量,即统计
    00000001,00000010,00000011中bit=1的数量,结果为4
    bitcount num 0 -1 统计所有的字节组中bit=1的数量,结果为5
    

    setbit设置或获取的是bit(位)的位置,bitcount计算的是byte(字节)位置。

  4. bitop and/or destkey sourcekey1 sourcekey2……将多个bitmaps通过求交集/并集方式合并成 一个新的bitmaps。

    bitop and k3 k1 k2 通过求交集将k1 k2合并成k3
    bitop or k3 k1 k2 通过求并集将k1 k2合并成k3
    

    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1656351.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果Mac用户下载VS Code(Universal、Intel Chip、Apple Silicon)哪个版本?

苹果macOS用户既可以下载通用版(Universal),软件将自动检测用户的处理器并进行适配。 也可以根据型号下载对应CPU的版本: 使用Intel CPU的Mac电脑可下载Intel Chip版本; 使用苹果自研M系列CPU的Mac电脑下载Apple Si…

“漫画之家”|基于Springboot+vue的“漫画之家”系统(源码+数据库+文档)

“漫画之家”系统 目录 基于Springbootvue的“漫画之家”系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2后台模块 5.2.1管理员功能模块 5.2.2用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&a…

Final Draft 12 for Mac:高效专业剧本创作软件

对于剧本创作者来说,一款高效、专业的写作工具是不可或缺的。Final Draft 12 for Mac就是这样一款完美的选择。这款专为Mac用户设计的剧本创作软件,凭借其卓越的性能和丰富的功能,让您的剧本创作更加得心应手。 Final Draft 12支持多种剧本格…

完美匹配企业需求的FTP替代软件,需要具备哪些功能和价值?

FTP作为世界范围内第一个文件传输协议,已被广泛使用30多年,也是企业使用较多的一种方式。但在数字化转型的浪潮中,企业对文件传输的需求日益增长,FTP存在的弊端也逐渐成为企业发展的桎梏,比如安全性、稳定性、传输效率…

软件测试基础理论复习

什么是软件? 软件是计算机系统中与硬件相互依存的另一部分, 软件包括程序文档 什么是软件测试? (1)软件测试是在现有软件(程序文档)中寻找缺陷的过程; (2&#xff0…

西部数据硬盘格式化了怎么恢复数据

在数字化时代,数据的重要性不言而喻。无论是个人珍贵的照片、视频,还是企业关键的业务文件,一旦丢失,都可能带来无法估量的损失。而硬盘作为数据存储的主要设备之一,其安全性与可靠性自然受到了广大用户的关注。然而&a…

会展服务预约小程序的作用是什么

年会、赛事、乐舞、招聘展览等多个场景都需要会展服务,商家需要将自己的服务推广出去获客转化,客户也需要找到合适靠谱的品牌,双方互相需求下,合理化线上运营触达非常重要。 运用【雨科】平台制作会展服务预约小程序,…

区块链的可扩展性三难问题

这个词是由以太坊的联合创始人Vitalik Buterin创造的,并提出了理想的区块链需要具备的三个特征:去中心化、可扩展性和安全性。 Vitalik还提出,区块链几乎不可能很好地实现所有这三个特征,所以会出现权衡。 因此,今天…

chatgpt快速搭建开发程序

程序开发中让GPT编写功能函数,懂原理的工程师只需要将GPT提供的命令码块按照项目对应的结构拆解后放置到项目文件夹对应的位置即可,高速高效快速搭建。 举例:

函数式接口-方法引用

定义 静态方法-方法引用 示例

QT功能 实现静态内容国际化实验

文章目录 第一步:新建一个QT工程第二步:添加控件第三步:在pro文件中添加内容第四步:更新文件第五步:打开QT的Linguist第六步:添加翻译内容第七步:回到QT Creator中添加文件第八步:给…

韶关市承装修试电力施工许可证五级可以承接哪些项目【资质办理指南】

韶关市承装修试电力施工许可证五级可以承接哪些项目【资质办理指南】 韶关市承装修试电力施工许可证五级可以承接的项目主要包括10千伏及以下电压等级电力设施的安装、维修或者试验活动。这意味着,持有五级许可证的企业可以在韶关市范围内承接包括变电站、配电站、输…

多链路聚合设备是什么

多链路聚合设备属于通信指挥装备。 乾元通多链路聚合设备,它能够将多个网络链路聚合成一个逻辑链路,以实现高速、稳定、可靠的数据传输。多链路聚合设备的核心技术包括链路聚合、负载均衡、故障切换等,能够智能管理和优化利用不同网络链路&a…

【国产SSL】哪家SSL证书可以保证数据不出境,是在国内验签

随着网络安全的重视,网站安装SSL证书已经是标配了。但是为什么目前常见的SSL证书都是国外的?数据受国外掌控,安全吗?那么哪家国产品牌是可以保证数据不出境的呢? 为什么目前常见的SSL证书都是国外的? 原因…

AlphaFold3(AF3)简单介绍:预测各种生物分子结构和它们之间相互作用的深度学习模型

参考: 文章地址: https://www.nature.com/articles/s41586-024-07487-w https://blog.google/technology/ai/google-deepmind-isomorphic-alphafold-3-ai-model/ AlphaFold3体验官网: https://golgi.sandbox.google.com/ 《Accurate structure prediction of biomolecula…

AI日报|苹果新款iPad Pro搭载AI芯片,DeepSeek-V2开源,百万token仅1元...

欢迎大家在 GitHub 上 Star 我们: 分布式全链路因果学习系统 OpenASCE: https://github.com/Open-All-Scale-Causal-Engine/OpenASCE 大模型驱动的知识图谱 OpenSPG: https://github.com/OpenSPG/openspg 大规模图学习系统 OpenAGL: https://github.com/TuGraph-…

跨越智能建筑桥梁:西门子PLC无缝对接BACnet楼宇自动化系统化

智能楼宇每一个环节的互联互通都至关重要,而PLC(可编程逻辑控制器)作为自动化领域的基石,其与BACnet协议的融合无疑成为了构建智能楼宇神经系统的关键节点。今天,让我们深入探讨如何利用先进的PLC转BACnet协议网关&…

继续SQL

主知识点六:having 聚合前的筛选用where,聚合后的筛选用having Having和where的区别是:运行顺序和对象不用 Having是在group by聚合后的基础上进行筛选。 ● 【例题27*】(运行原理)查询总人口数至少为3亿的大洲和…

ai可以做思维导图吗?当然是可以的!

ai可以做思维导图吗?在快节奏的现代生活中,思维导图作为一种高效的信息组织和表达工具,越来越受到人们的青睐。随着人工智能(AI)技术的不断发展,AI思维导图软件也应运而生,它们不仅能够帮助用户…

MindSponge分子动力学模拟——软件架构

技术背景 在前面一篇文章中,我们介绍了MindSponge的两种不同的安装与使用方法,让大家能够上手使用。这篇文章主要讲解MindSponge的软件架构,并且协同mindscience仓库讲解一下二者的区别。 整体架构 首先我们来了解一下MindSponge独立仓库的…