Redis(位图Bitmap和位域Bitfield)

news2024/10/6 8:28:24

位图:

位图是字符串类型的扩展。

Redis中的位图是一种特殊的数据结构,用于表示一系列位的集合。它可以存储大量的布尔值数据,每个位代表一个布尔值(0或1),并且可以对这些位进行各种位运算操作。位图通常用于记录用户的行为数据、统计数据等,以及节省存储空间和快速计算数据的需求。 Redis提供了一系列的位图操作命令,可以对位图进行设置、获取、统计、位运算等操作。

位图的命令中都有BIT。

使用SETBIT来设置位图, 前面的数字是偏移量,后面的数字是值。使用GETBIT获取偏移量的值。

 前面说过位图是字符串类型的扩展,所以可以使用设置字符串的命令来设置位图,如上图就可以一次性设置多个偏移量。

使用 BITCOUNT查询位图中1的个数。和C++STL中的bitset中的count函数效果一样。

在Redis中,BITPOS命令用于查找指定位图中第一个设置或清除的位的位置。其基本语法如下:

BITPOS key bit [start] [end]

- key:要操作的位图的键名。
- bit:要查找的位的值,可以是0或1。
- start:可选参数,指定起始位置,默认为0。
- end:可选参数,指定结束位置,默认为-1(表示整个位图)。

BITPOS命令会在指定的起始位置到结束位置范围内查找第一个设置或清除的位的位置,并返回其索引值。如果指定的位值在指定范围内不存在,则返回-1。

例如,假设有一个名为mybitmap的位图,我们可以使用以下命令来查找第一个设置为1的位的位置:

BITPOS mybitmap 1

这将返回第一个设置为1的位的位置,如果不存在则返回-1。

如果我们想在指定范围内查找第一个设置为0的位的位置,我们可以使用以下命令:

BITPOS mybitmap 0 2 5

这将在mybitmap位图的索引2到索引5之间查找第一个设置为0的位的位置。

总之,BITPOS命令可以用于在位图中查找指定位值的位置,是对位图进行操作和查询的有用工具。

位域:

在 Redis 中,位域(Bitfield)是一种用于操作位图的高级命令。通过位域命令,可以对位图中的指定位进行读取、设置、清除等操作。

位域命令的基本语法如下:

BITFIELD key [GET type offset] [SET type offset value] [INCRBY type offset increment] [OVERFLOW WRAP|SAT|FAIL]

其中,各个参数的含义如下:

- key:要操作的位图的键名。
- GET type offset:从位图中获取指定偏移量处的位的值。
- SET type offset value:设置位图中指定偏移量处的位的值。
- INCRBY type offset increment:对位图中指定偏移量处的位进行增加或减少操作。
- OVERFLOW WRAP|SAT|FAIL:指定位域命令的溢出行为,可以选择包装(WRAP)、饱和(SAT)或失败(FAIL)。

通过位域命令,可以方便地对位图进行各种复杂的位操作,如获取、设置、增减等。这使得 Redis 的位图数据结构更加灵活和强大,能够更加高效地处理布尔值数据。

总之,位域是 Redis 中用于操作位图的高级命令,可以对位图中的位进行各种操作,是对位图数据结构的扩展和增强。

位域能将很多小的整数存储到一个较大的位图中,这样就可以更加高效的使用内存。

使用位域可以做出一个游戏角色的属性图。 

使用BITFIELD设置等级为1,上图U8的意思是一个8位的无符号整数,#0表示第一个位置。

若使用i8则表示,8位有符号整数。

使用GET查看内存中的情况,返回的是十六进制的01.若想查看10进制的等级只需要将第一句语句中的set改成get就好了。

#1代表第二个位置,他后面的100为设置的值,可以将他看作金钱数量为100。使用GET查看内存中的情况。

可以使用incrby来增加100个金币。 减少就可以使用-100。

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

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

相关文章

Python二级 每周练习题27

如果你感觉有收获,欢迎给我微信扫打赏码 ———— 以激励我输出更多优质内容 练习一: 用户输入一个半径r,求该半径下的圆的面积s与周长c。要求如下: (1)输出的面积与周长都保留俩位小数; (2&a…

时尚女童千金小套装,爱了爱了

自带氛围感的小套装简直不要太好看 红色吸睛又喜庆,显白不挑人穿 谁穿都好看系列!! 厚实的苏两毛羊毛 保暖性能真的非常好 超柔软的手感和触感 显得很高级穿上也很舒适 一整个小公主style,时尚气质感拉满 里面的连衣裙单穿也很nice …

【CLion】CLion的cmake-build-release/debug位置变更

[CLion] CLion的cmake-build-debug和cmake-build-release位置变更 CLion IDE的cmake-build-release/debug位置是根目录下,虽然可以ignore这个文件,但是还是有点看起来不爽,按照这个方式就可以,干掉他,更改方式如下。 …

2.并发中-线程安全问题及三大特性

目录 概述线程线程安全问题线程安全的根本原因验证代码执行结果 解决线程安全代码结果 线程并发三大特性指令重排as-if-serial可见性cpu和缓存一致性java内存模型(java memory model)解决可见性问题及happens-before 结束 概述 线程 线程安全问题 多个线程同时执行&#xff…

中石油勘探院张弢:从业务到架构全面探讨中国石油的数字化转型之路

引言:OSDU论坛的诞生与壮大,对油气行业的数字化有极大的推动力,国内油气行业正在紧锣密鼓地开展数字化转型、智能化发展。当前油气上游业务数字化转型正在轰轰烈烈的开展,一些明星油田的数字化率无限接近100%,基于业务…

BGP笔记实验

IGP(Interior Gateway Protocol)——内部网关协议 OSPF RIP IS-IS IGRP EIGRP EGP(External Gateway Protocol)——外部网关协议 EGP BGP——边界网关协议 AS——自治系统 由单一组织or机构独立维护的网络设备&网络资源的集合 网络范围太大 自治 AS号 为了区分不同…

基于V100下Llama2-Atom大模型微调

文章目录 大规模的中文数据预训练模型部署模型微调Step1: 环境准备Step2: 数据准备Step3: 微调脚本Step4: 加载微调模型 一些BUG 大规模的中文数据预训练 原子大模型Atom在Llama2的基础上,采用大规模的中文数据进行持续预训练,包含百科、书籍、博客、新…

算法(圆的定义和相关术语)

无向图的度 图中每一个顶点的度定义为以该项点为一个端点的边的数目 #include <cstdio>const int MAXN 100;int degree[MAXN] { 0 };int main() {int n, m, u, v;scanf("%d%d", &n, &m);//在输出边度的时候就已经表示度的数目了&#xff0c;所以用一…

什么是高防CDN?有什么优势?

德迅高防CDN技术概述 随着互联网的快速发展&#xff0c;网络安全问题越来越受到人们的关注。高防CDN(Content Delivery Network)作为一种有效的网络安全防御手段&#xff0c;在企业和个人网站中得到了广泛应用。本文将详细介绍高防CDN的技术原理、防御原理、优点和应用场景&am…

探伤仪的曲线

超声波检验DAC曲线、AVG曲线的区别、使用及制作方法 一、 概念 1.1 DAC曲线 DAC距离波幅曲线是描述某一确定反射体回波高度随距离变化的关系曲线。因此&#xff0c;AVG曲线和DAC曲线都有纵波、横波制作的曲线&#xff0c;并不是简单地由纵波、横波来划分何为AVG曲线&#xf…

怎么实现在微信公众号秒杀商品的功能呢

实现微信公众号秒杀商品的功能&#xff0c;需要结合微信公众平台和后端开发技术。下面将介绍整个实现过程&#xff0c;包括前期准备、开发流程和后期运营等方面。 一、前期准备 确定秒杀商品&#xff1a;选择适合秒杀的商品&#xff0c;要求数量充足、质量良好&#xff0c;同时…

Python下使用requests库遇到的问题及解决方案

每一盏灯都有一个故事……当凌晨2点我的房间灯还亮着时&#xff0c;那就是我与BUG的一场生死博弈。一个人静静地坐在电脑前不断地写代码&#xff0c;感觉快要麻木了&#xff0c;好比闭关修炼一样枯燥无味。最终当我打通任督二脉后&#xff0c;bug修复迎来的一片曙光。 一、问题…

广东网络广播电视台《明星小主播》栏目开拍 小主持神采奕奕

近日&#xff0c;由广东网络广播电视台的《明星小主播》栏目&#xff0c;在广东广播电视台&#xff08;人民北路&#xff09;广州越秀区人民北路686号主楼五楼火热开拍&#xff0c;幕后花絮曝光。《明星小主播》栏目是一档专业少儿主持类节目&#xff0c;节目旨在培养小朋友的主…

模方4.1.0新版本正式上线啦!

新增单体化自动建模&#xff0c;直角搭桥、复制三角形两种方式补洞等功能&#xff0c;还有更多功能优化&#xff0c;让你的三维模型更好看&#xff01; 欢迎前往官网下载试用→武汉大势智慧-实景三维-云端建模-新型基础设施

适合学校或高校老师、学生学习用的网盘推荐

现代教育中&#xff0c;数字化的教学资源和家长的参与度越来越重要。然而文件传输的问题一直是学校和家长面临的一个挑战&#xff0c;网络限制、U盘病毒和文件管理不便等问题&#xff0c;都对教学质量和家校沟通造成了影响。Zoho WorkDrive企业网盘为学校还有教辅机构提供了一个…

MAX/MSP SDK学习03:Atoms and Messages的使用

今天终于把Message消息选择器看得有点头绪了&#xff0c;主要是这个官方英文文档理解起来有点抽象。 编写IsMatchABC自定义Object&#xff0c;要求&#xff1a; ①若左入口&#xff08;入口0&#xff09;收到 "int" 型消息&#xff0c;则从出口发送数值 "888&q…

做外贸要学会分析客户情况

最近在某产品的专业群里询问一款产品&#xff0c;看谁可以做&#xff0c;然后很快就有一个自称是工厂的人加上了我。因为自己本身并不懂这个产品&#xff0c;很多他们发的问题自己都答不上来。我就如实告诉他自己是个新手&#xff0c;可以把你们现在能做的&#xff0c;或者已经…

数据结构之栈的讲解

&#x1f495;" 春宵一刻值千金&#xff0c;花有清香月有阴。 "&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;leetcode刷题之哈希表的应用(1) 1.栈的概念 栈是一种只允许在一端&#xff08;栈顶&#xff09;进行数据操作的数据结构&#xff0c;具…

一篇文章让你彻底了解Java算法「十大经典排序算法」

✍️作者简介&#xff1a;码农小北&#xff08;专注于Android、Web、TCP/IP等技术方向&#xff09; &#x1f433;博客主页&#xff1a; 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN &#x1f514;如果文章对您有一定的帮助请&#x1f449;关注✨、点赞&…

Delayed 延时任务

延时任务与定时任务的区别 延时任务&#xff0c;可以理解为定时任务的一种&#xff0c;但是他们是有区别的。 延时任务&#xff1a;将程序代码延时执行&#xff0c;执行完毕&#xff0c;即为结束。 定时任务&#xff1a;周期性执行任务。代码执行完毕后&#xff0c;并不意味着…