【Redis7】10大数据类型之Bitfield类型

文章目录

  • 1. Bitfield简介
  • 2. BITFIELD key [GET type offset]
  • 3. BITFIELD key [SET type offset value]
  • 4. BITFIELD key [INCRBY type offset increment]

1. Bitfield简介

Bitfield(位域)命令可以将一个 Redis 字符串看作是一个由二进制位组成的数组, 并对这个数组中任意偏移进行访问 。

BITFIELD 命令的作用在于它能够将很多小的整数储存到一个长度较大的位图中,又或者将一个非常庞大的键分割为多个较小的键来进行储存,从而非常高效地使用内存,使得 Redis 能够得到更多不同的应用 --特别是在实时分析领域:BITFIELD 能够以指定的方式对计算溢出进行控制的能力,使得它可以被应用于这一领域。

Bitfield功能就是: 位域修改+溢出控制

以上是Bitfield的一些概念,比较抽象. 直接来看命令

2. BITFIELD key [GET type offset]

BITFIELD key [GET type offset]: 返回指定的位域

  • key: 要操作的Redis键。
  • GET: 表示要从字符串值中读取位。
  • type: 指定读取数据的类型,可以是u(无符号整数)、i(有符号整数)
  • offset: 位字段的起始偏移位置,从0开始计数。
127.0.0.1:6379> set k1 abcd
OK
127.0.0.1:6379> get k1
"abcd"
127.0.0.1:6379> bitfield k1 get i8 0
1) (integer) 97
127.0.0.1:6379> bitfield k1 get i8 8
1) (integer) 98
127.0.0.1:6379> 
  • i8: 有符号8位

在这里插入图片描述

Bitfield(位域)命令可以将一个 Redis 字符串看作是一个由二进制位组成的数组,因此返回值就是这些字符对应的ASCII码值

3. BITFIELD key [SET type offset value]

BITFIELD key [SET type offset value]:设置指定位域的值并返回它的原值

  • key: 要操作的Redis键。
  • SET: 表示要设置字符串值中的位。
  • type: 类型标识,可以是u(无符号整数)、i(有符号整数)。同GET操作,目前Redis不直接支持浮点数的位操作。
  • offset: 要设置位字段的起始偏移位置。
  • value: 要设置的值,根据类型不同,这个值有不同的解释。对于整数,它是你希望写入的整数值。

示例:

127.0.0.1:6379> bitfield k1 set i8 0 111
1) (integer) 97
127.0.0.1:6379> get k1
"obcd"
127.0.0.1:6379> 

111对应ASCII码表中对应’o’,可以看到’a’已经被修改成’o’了
在这里插入图片描述

4. BITFIELD key [INCRBY type offset increment]

  • key: 要操作的Redis键。
  • INCRBY: 表示自增。
  • type: 类型标识,可以是u(无符号整数)、i(有符号整数)。同GET操作,目前Redis不直接支持浮点数的位操作。
  • offset: 要设置位字段的起始偏移位置。
  • increment: 自增的数值。

示例:

127.0.0.1:6379> get k1
"obcd"
127.0.0.1:6379> bitfield k1 incrby i8 0 1
1) (integer) 112
127.0.0.1:6379> get k1
"pbcd"
127.0.0.1:6379> 

有符号8位二进制表示是有范围的: -128~127,如果一直自增就会溢出.

而Redis提供了三种移除控制方式:

  • WRAP:使用回绕(wrap around)方法处理有符号整数和无符号整数的溢出情况
  • SAT: 使用饱和计算(saturation arithmetic)方法处理溢出下溢计算的结果为最小的整数值,而上溢计算的结果为最大的整数值
  • FAIL: 命令将拒绝执行那些会导致上溢或者下溢情况出现的计算,并向用户返回空值表示计算未被执行

WRAP方式示例:

127.0.0.1:6379> bitfield k1 set i8 0 127
1) (integer) 112
127.0.0.1:6379> bitfield k1 get i8 0
1) (integer) 127
127.0.0.1:6379> bitfield k1 incrby i8 0 1
1) (integer) -128
127.0.0.1:6379> bitfield k1 get i8 0
1) (integer) -128
127.0.0.1:6379> 

SAT方式示例:

127.0.0.1:6379> bitfield k1 overflow sat set i8 0 128
1) (integer) -128
127.0.0.1:6379> bitfield k1 get i8 0
1) (integer) 127
127.0.0.1:6379> 

FAIL方式示例:

127.0.0.1:6379> bitfield k1 overflow fail set i8 0 128
1) (nil)
127.0.0.1:6379> bitfield k1 get i8 0
1) (integer) 127
127.0.0.1:6379> 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React 状态管理库深度对比:在做技术选型的时候如何选择合适的状态库,nolan出品

掘金链接:https://juejin.cn/post/7368288987642232872 1,简介 在状态共享这方面,不像 Vuex,React 的官方并没有强力推荐某种封装方案,所以 React 的状态管理工具五花八门,百花齐放, react-redux、dva、C…

全像宇宙投影第三部时间与空间(全文)下载

当这个人向空中凝视时,他所在的房间渐渐变得透明而朦胧,空中渐渐浮现一个久远前景像。突然他觉得自己在皇宫中庭内,他面前站著一位年轻女士非常美丽,有著橄榄色的皮肤。他可以见到她的颈项、手腕、脚踝上都挂著金饰,还…

基于HTTP GET方式获取网络时间的实现

上一节,我们介绍了基于NTP服务器获取网络时间的例子,但在有些情况下,比如我最近在使用RNDIS协议通过4G模块上网,这个协议不支持UDP协议,所以就用不了NTP服务器。或者有时候我们需要有更多的网络时间获取方式&#xff0…

Dart 3.4 发布:Wasm Native Macros(宏)

Google I/O 的结束,除了 Flutter 3.22 的发布 ,Dart 3.4 也迎来了它是「史诗级」的更新,之所以这么说,就是因为 Wasm Native 的落地和 Macros 的实验性展示。 在此之前,其实我也提前整理过一些对应的内容,…

平安养老险深圳分公司携手福海街道开展5.12防灾减灾活动

在构建和谐社会、倡导人文关怀的当下,平安养老险深圳分公司以高度的社会责任感和深厚的人文情怀,持续关注老年人的健康与安全。在今年“5.12防灾减灾日”来临之际,公司积极响应倡议,于5月10日携手福海街道举办了一场别开生面的消防…

校园电话机对于校园信息化管理非常重要

任何一部校园电话机都有信息办理渠道,并且发挥着重要的效果,能够满意整个机器的更快速运作。然后使学生能够取得一个更好的运用条件,学生在运用产品的过程中,要经过正确的操作环节才能够发挥产品的优胜功能,然后到达一…

[Algorithm][回溯][组合][目标和][组合总和]详细讲解

目录 1.组合1.题目链接2.算法原理详解3.代码实现 2.目标和1.题目链接2.算法原理详解3.代码实现 3.组合总和1.题目链接2.算法原理详解3.代码实现 1.组合 1.题目链接 组合 2.算法原理详解 思路:每次都只选一个数,此后只能选它后面的数函数设计&#xff…

金万维动态域名小助手怎么用?

金万维动态域名小助手是一个域名检测工具,使用此工具可以进行检测域名解析是否正确、清除DNS缓存、修改DNS服务器地址及寻找在线客服(仅支持付费用户)等操作。对不懂网络的用户是一个很好的检测域名的工具,下面我就讲解一下金万维…

【class8】人工智能初步(图像识别-----卷积神经网络)

上节回顾 上节课,我们简单了解了图像识别和深度学习的相关知识。 快速回顾一下吧~ A图像识别是以图像的主要特征为基础的。B. 图像分辨率决定图像的质量。 C. 像素是图像中的最小单位D. 在图像识别的原理上,计算机和人类在本质…

VNA校准补充知识点

双端口校准中,SLOT已知直通校准;SLOR未知直通校准;后者精度更高 其余校准方式补充 1.增强型频响校准(比SOLT简单),适用于器件的单向测量(S11,S21) 2.SOLR(未知直通校准&…

Java聚合项目打包运行笔记

聚合项目创建 略 聚合项目打包配置 父工程 pom文件添加 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>…

一本书打通SLAM在智能汽车/自动驾驶领域应用

自动驾驶技术已成为当今数字化时代汽车行业的热点话题之一。随着技术的不断成熟&#xff0c;越来越多的车辆采用激光SLAM&#xff08;即时定位与地图构建&#xff09;和视觉SLAM技术&#xff0c;实现更高层次的智能网联汽车。SLAM技术在智能网联汽车中的应用是非常重要的&#…