Redis学习笔记--string、bitmap

Redis数据类型String之bitmap 今天来总结一下最近学些的redis数据类型string之bitmap 操作 相关命令 先用一下代码查看redis 的string类型都支持哪些方法 或者从redis 中文文档查看 点我直接过去 相关的命令,就出现了 和bitmap 相关的有一下几个 setbit 使用说明:setbit key offset value key 就是你想设置的key offset 就是想设置的下标 value 就是你想设置的值,这里只能是0或者1 看下边的例子 首先我先setbit k1 1 1 那么保存到redis 后 阅读详情

String字符串:

set k1 keyName nx:只有keyName不存在的时候才能设置成功,可实现分布式锁。

set k1 keyName xx :只有keyName存在的时候才能设置成功,即更新操作。

mset k1 a k2 b

mget k1 k2

批量set和get。

append k1 "hello":将"hello"追加到k1字符串的后面。

getrange k1 3 4:取k1的第4个到第五个字符。

getrange k1 3 -1:取k1的第4个到最后一个字符,利用正负向索引。

setrange k1 3 hahahaha:从第四个位置开始覆盖。

strlen k1:获取字符串的长度

incr k1:k1 加 1

decr k1: k1 减 1

incrby k1 66:k1 加 66

decrby k1 66:k1 减 66

bitmap:

setbit k1 1 1: 即 01000000    -> 对应ASCII码: @

setbit k1 7 1: 即 01000010    -> 对应ASCII码: A

setbit k1 9 1:即 01000010 01000000    get k1为: A@

-----

eg:当前k1为:01000010 01000000

                   (01234567 8910111213141516)

bitpos:查找0或1第一次出现的二进制位置

bitpos k1 1 0 0:1

bitpos k1 1 1 1:9

bitpos k1 0 1:1

bitcount:统计在字节范围内1出现的次数

bitcount k1 0 0:2

bitcount k1 1 1:1

bitcount k1 0 1:3

------

给定k1 : 01000001  (A)       k2:01000010 (B)

bitop and andkey k1 k2:k1与k2按位与运算

get andkey:@

bitop or orkey k1 k2:k1与k2按位或运算

get orkey:C

bitmap应用场景1:

假设一个电商平台要统计一个用户的登录天数,统计时间随机,怎么做最优?

如果用传统的MySQL关系型数据库当然可以实现,但是在数据量巨大的互联网巨头公司的用户量的需求下,显然太耗费空间与性能。

使用setbit实现:

setbit tom 0 1 : tom第1天登录

setbit tom 6 1 : tom第7天登录

setbit tom 364 1 : tom第365天登录

如果要统计tom最后两周的登录天数?

bitcount tom -2 -1 即可。

占用空间:

每个人365/8=46B

假设一千万用户,则需要46B*10000000=460M

bitmap应用场景2:

假设电商平台(2亿用户)过节大促,给每个当天登录的用户都发放一份礼物,求需要多少份礼物?(即:活跃用户统计)

将上面的k v 反转即可

即:日期作为key    登录的userId为value

setbit 20210101 1 1:2021年1月1日   id为1的登录了

setbit 20210102 1 1:2021年1月2日   id为1的登录了

setbit 20210102 7 1:2021年1月2日   id为7的也登录了

此时统计这两天的登录用户数:

bitop or destkey 20210101 20210102

bitcount destkey 0 -1

基于Redis的bitmap位图实现用户签到功能 小编精心为大家准备了一手资料以上Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术【附】架构书籍BAT面试的20道高频数据库问题解析Java面试宝典Netty实战算法BATJ面试要点及Java架构师进阶资料《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取! 阅读详情

相关推荐

redis bitmap数据类型调研

它允许你在单个命令中对一个或多个位域(bit field)进行操作,包括获取和设置指定位域的值,支持不同的编码方式(如有符号整数和无符号整数),还能处理溢出情况。官方文档介绍,bitmap能操作的最大偏移量是2^32,所以这里也限制了bitmap的最大容量为512MB,而且最后设置的位如果快到了2的32次方,那么就可能会存在阻塞的情况,下面是官方文档的原文。只能用于读取操作,不能进行写入操作(如设置位域的值、增加位域的值等),这使得它在只需要获取位图信息而不修改位图的场景下使用,能避免意外的数据修改。

Xingshi89的专栏 1196

redis的string类型及bitmap

key的type类型,是用于判断访问的方法是不是具备这个类型的操作,可以快速返回错误,可以规避异常。encoding是可以规避同一种type类型但是根据不同的表现形式做计算这件事,还有length属性,如果数据未发生改变可以直接返回长度httpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttpshttps。...

lsd&xql的博客 539

Redis 实战篇:巧用Bitmap 实现亿级海量数据统计

阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了1、JAVA面试核心知识整理(PDF):包含JVMJAVA集合JAVA多线程并发,JAVA基础,Spring原理微服务,Netty与RPC,网络,日志,ZookeeperKafkaRabbitMQ,Hbase,MongoDB设计模式负载均衡数据库一致性哈希JAVA算法数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。2、Redis学习笔记及学习思维脑图。

2401_83916030的博客 852

redis学习笔记 ——redis中的四大特殊数据结构

Bitmap(位图),是一串连续的二进制数组(0和1),可以通过偏移量(offset)定位元素,通过对最小单位bit进行0|1的设置来表示某个元素的值或者状态,由于 bit 是计算机中最小的单位,使用它进行储存将非常节省空间,特别适合一些数据量大且使用二值统计的场景。Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。

qq_73924465的博客 1740

【Redis缓存数据库】Redis使用String类型及BitMap类型的操作

通过上篇文章,已经在VMWare的虚拟机上的CentOS环境下,安装了Redis,接下来就是实际应用Redis的场景,这里当前主要以String类型、BitMap类型的相关操作进行实践。

weixin_39872516的博客 1251

手把手教你用ADS优化肖特基二极管检波电路(附RC参数避坑指南)

本文详细介绍了如何使用ADS软件优化肖特基二极管检波电路,包括RC参数设置、常见失真问题分析与解决方案。通过实战案例和参数优化技巧,帮助射频工程师避免设计陷阱,提升电路性能。特别附有RC参数避坑指南,适用于调幅解调、功率检测等应用场景。

m2n3o4p5的博客 198

Redis 高级数据结构 bitmap(位图)

简介: 位图(bitmap)同样属于string数据类型。Redis中一个字符串类型的值最多能存储 512 MB 的内容,每个字符串由多个字节组成,每个字节又由 8 个 Bit 位组成。位图结构正是使用“位”来实现存储的,它通过将比特位设置为0或1来达到数据存取的目的这大大增加了 value 存储数量,它存储上限为2^32 。 位图本质上就是一个普通的字节串,也就是 bytes 数组。您可以使用getbit/setbit命令来处理这个位数组,位图的结构如下所示: 位图适用于一些特定...

qq_45376284的博客 2598

华硕主板UEFI模式下安装Ubuntu与Windows双系统全攻略

本文详细讲解了在华硕主板UEFI模式下安装Ubuntu与Windows双系统的完整流程。从安装前的BIOS关键设置(如处理安全启动与CSM)、使用GPT分区表,到在Windows中安全分配空间、手动创建Ubuntu分区,最后完成引导配置,提供了避免常见错误的实用技巧,确保双系统稳定共存。

weixin_29199873的博客 345

Redis实战(二):Redis 的 String 类型 & bitmap

Redis 常用命令、数据类型 查看帮助 To get help about Redis commands type: "help @<group>" to get a list of commands in <group> "help <command>" for help on <command> "help <tab>" to get a list of possible help topics

寒泉 6万+

Pytorch中CrossEntropyLoss()详解

交叉熵主要是用来判定实际的输出与期望的输出的接近程度。举个例子:在做分类训练的时候,如果一个样本属于第 K 类,那么这个类别所对应的输出节点的输出值应该为1,而其他节点的输出都为0,即 [0,0,1,0,….0,0] ,这个数组也就是样本的 Label,是神经网络最期望的输出结果。我们用交叉熵损失函数来衡量网络的实际输出与正确标签的差异,利用这种差异经过反向传播去更新网络参数。交叉熵:它主要刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。

flyingluohaipeng的博客 3861

【点云数据集】整理汇总(自用,更新ing)

涵盖了各种不同的城市场景:教堂、街道、铁路轨道、广场、村庄、足球场、城堡等等。邮件地址:dmich-request@graphics.stanford.edu,内容需包含:1. 您的姓名、头衔或职位,以及所在机构或隶属关系;license比较难获取,目前可获取的人员:(1)目前隶属于大学、工业研究实验室或其他主要机构的已发表过研究成果的研究人员;普林斯顿 ModelNet 项目的目标是为计算机视觉、计算机图形学、机器人技术和认知科学领域的研究人员提供全面、干净的物体 3D CAD 模型集合。

weixin_44392103的博客 796

Redis学习笔记:数据结构和命令

五大数据类型,BitMap,布隆过滤器,HyperLogLog,GEO,数据类型相关指令

sinat_38393872的博客 875

matplotlib三维画图之观察博弈论混合策略下纳什均衡点

参考链接: 博弈论入门20讲之第16讲-猜谜游戏-散户如何赢庄家 游戏背景: 我的期望是: 你的期望是: 使用Python的matplotlib画图: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = Axes3D(fig) X = np.linspace(0, 1, 100) Y = np.linspace(0, 1,

敲代码的小风 1258

Redis学习笔记 ----- 数据结构

类似 Java 的 HashMap ,value 是无序字典。String 存对象需序列化 JSON ,修改字段不便;Hash 可将对象字段独立存,方便单个字段 CRUD。Redis 的 SortedSet 是可排序的集合,类似 Java 中的。,可看作 value 为 null 的。,在前面示例中会返回 0(降序排名,:排名默认升序,如需降序,命令前加。

weixin_74333370的博客 766

vTestStudio保姆教程之从0到1搭建软件环境

学习HIL测试的必经之路,保姆级教学VT从搭建到测试。

欢迎来到eee的博客 4185

vue3:最新实现腾讯人脸核身+增强版人脸核身使用方法及示例源码,Vue3如何使用腾讯云慧眼人脸核身,提供人脸核身案例、身份信息核验、活体检测与核身比对等示例代码(后端spring与thinkphp)

vue3接入腾讯人脸核身,腾讯云人脸核身Vue3+后端代码,H5人脸核身,vue3 H5如何使用腾讯人脸核身sdk,vue3+thinkphp腾讯人脸核身,Spring Boot接入腾讯云人脸核身教程,hinkphp腾讯人脸核身,vue3人脸核身插件接入流程,vue+spring boot实现腾讯人脸核身,vue3接入腾讯云【增强版人脸核身接入】,vue3 h5微信公众号网页腾讯云慧眼人脸核身,tvue3接入人脸核身SDK,vue3+typescrip+vite接入慧眼实名认证,vue3腾讯云活体人脸核身(

✅ 精选推荐文章 4119

Redis之bitmap

在我们的平常开发中,我们需要存储一些bool类型的值,比如用户在一年内的签到记录,一年有365天,如果我们用普通的key/value来进行存储的话,那么如果用户数量达到一个非常大的量级的话,这对于内存是一个巨大的消耗,所以在这样的场景下我们使用bitmap来存储的话,每一天的签到记录就只占一个位,那么一年的话就是365个bit(不到46个字节)。这里二进制表示的从左到右是高位到低位,我们分别看到字符a的二进制从左到右第1/2/7位为1,那我们设置一个第1位,第2位,第7位为1的bitmap来试一下。

weixin_43157245的博客 2433

YOLOv8改进策略【YOLO和Mamba】| 2024 VM-UNet,高效的特征提取模块VSS block 二次创新提高精度

VM-UNet模型设计的出发点是解决现有CNN-based和模型在医学图像分割中的局限性,利用(SSMs)的优势,提出一种更有效的医学图像分割模型。具体来说,CNN-based模型在捕捉长距离信息方面存在不足,而模型由于自注意力机制的二次复杂度导致计算负担较重。SSMs模型如Mamba不仅在建模长距离依赖方面表现出色,还具有线性计算复杂度,这为VM-UNet的设计提供了理论基础。

Limiiiing的博客 616

Redis的String类型及bitmap

Redis使用Redis简介set命令功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 Redis简介 Redis基础命令之String类型的操作 String类型又分为:字符串,int,bimap。 Redis是二进制安全的,以字

qq_42787645的博客 414

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

redis中bitmap的使用及场景,如何操作

在签到统计时,每个用户一天的签到用 1 个 bit 位就能表示,一个月(假设是 31 天)的签到情况用 31 个 bit 位就可以,而一年的签到也只需要用 365 个 bit 位,根本不用太复杂的集合类型。这意味着你可以用一个Bitmap来跟踪多达数百万甚至数十亿的状态,只要状态总数不超过 2^(8 * (512 MB / 1 byte)),即大约 2^32 个状态(考虑到字符串末尾的结束符,实际可用的偏移量上限是 2^32 - 1)。对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。

m0_74356429的博客 3397

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Redis - Bitmap类型

1.Bitmap(位图)Redis的Bitmap类型并不是一个独立的数据类型,而是对String类型的一种巧妙使用,允许开发者以位级别操作字符串中的数据。Bitmap可以视为一个巨大的位数组,每个位(bit)可以存储0或1的值,这使得Bitmap非常适合用于存储和操作大量的布尔值或者进行高效的统计计数。Bitmap文持的最...

qq_35485206的博客 739

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Redis数据类型之String——字符串、数值、bitmap

bitop or destkey 20230101 20230102 --表示将2023年1月1号的用户登录情况 和2023年1月2号的用户登录情况进行二进制 或 运算。一个字节对应8位,设置一个位后如果用get去获取,只能得到该key对应的ASCII码的值,比如我设置 0100 0000,表示给偏移量第二位设置1,他会取到ASCII码的值为 @ 符;--2023年1月1号 3号位索引的用户登录了一次,bitcount zhangsan -2 -1 --张三最后两天登录的天数为1。

huanloveqiang的博客 1000

Redis Bitmap详解:原理、应用与最佳实践

Redis中的Bitmap(位图)是一种基于String类型实现的特殊数据结构,它通过二进制位(bit)来高效存储和操作大量布尔值数据。

weixin_73385730的博客 2023
上一篇: Java反射
下一篇: Redis学习笔记--list
Forest24
博客等级 码龄9年 29粉丝 125原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值