大数据学习之Redis,十大数据类型的具体应用(三)

目录

[3.7 Redis位图(bitmap)](#3.7 Redis位图(bitmap))

概念

需求

是什么

说明

能干嘛?

基本命令


3.7 Redis位图(bitmap)

概念

由0和1状态表现的二进制 的bit数组

需求
  • 用户是否登陆过?Y / N

  • 广告是否被点击过?

  • 钉钉打卡上下班,签到统计

是什么
说明

String类型作为底层数据结构实现的一种统计二值状态的数据类型

位图本质是数组,它是基丁String数据类型的按位的操作。该数组由多个二进制位组成,每个二进制位都对应一个偏移量(我们称之为一个索引)。 Bitmap支持的最大位数是2^32位,它可以极大的节约存储空间,使用512M内存就可以存储多达42.9亿的字节信息(2^32 = 4294967296)

能干嘛?

用于状态统计,Y、N,类似AtomicBoolean

基本命令
  • setbit key offset value

setbit 键 偏移量 -->只能零或者1

Bitmap 的偏移量是从零开始计算的

复制代码
setbit k1 1 1
setbit k1 2 1
setbit k1 3 1
setbit k1 3 0
sype k1 #输出 string  --> setbit的底层是string
  • getbit
复制代码
getbit k1 0 #输出 0
getbit k1 1 #输出 1
getbit k1 2 #输出 1
getbit k1 3 #输出 1
  • strlen

统计字节数占用多少

不是字符串长度而是占据几个字节,超过8位后自己按照8位一组一byte再扩容

复制代码
setbit k2 0 1
setbit k2 7 1 
strlen ke #输出 1
setbit k2 8 1
strlen ke #输出 2
  • bitcount

全部键里含有1的有多少个?

复制代码
setbit uid:login123 1 1
setbit uid:login123 2 1
setbit uid:login123 3 1
bitcount uid:login123 #输出 3
  • bitop

bit位的运行操作

连续签到两天

复制代码
HSET uid: map o uid-092iok-lkj
HSET uid: map 1 uid-7388c-xxx
HGETALL uid: map #输出 0 uid-092iok-lkj 1 uid-7388c-xxx
  • setbit 和 getbit 案例说明

考勤系统

相关推荐
啦啦啦_999912 分钟前
Redis-2-queryFormat()方法
数据库·redis·缓存
1024小神1 小时前
SVG标签中path路径参数学习
学习
浅念-1 小时前
C++入门(2)
开发语言·c++·经验分享·笔记·学习
ZH15455891311 小时前
Flutter for OpenHarmony Python学习助手实战:面向对象编程实战的实现
python·学习·flutter
玄同7651 小时前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
吾日三省吾码1 小时前
别只会“加索引”了!这 3 个 PostgreSQL 反常识优化,能把性能和成本一起打下来
数据库·postgresql
chian-ocean1 小时前
百万级图文检索实战:`ops-transformer` + 向量数据库构建语义搜索引擎
数据库·搜索引擎·transformer
简佐义的博客1 小时前
生信入门进阶指南:学习顶级实验室多组学整合方案,构建肾脏细胞空间分子图谱
人工智能·学习
近津薪荼1 小时前
dfs专题4——二叉树的深搜(验证二叉搜索树)
c++·学习·算法·深度优先
小Tomkk1 小时前
数据库 变更和版本控制管理工具 --Bytebase 安装部署(linux 安装篇)
linux·运维·数据库·ci/cd·bytebase