ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

redis-BitMaps(位图)【redis】

2021-12-05 09:03:09  阅读:143  来源: 互联网

标签:127.0 0.1 redis BitMaps 6379 integer 打卡 sign


BitMaps(位图)

前言

我们统计用户信息,比如csdn上面有统计粉丝的活跃度,或者在B站里面统计上线的人数,一般我们在QQ上面看到的没在线的用户头像就是灰色的,更简单的比如我们上班打卡这些两种状态的(不活跃,活跃,登录,未登录,打卡,未打卡等等)

位存储

使用位存储,信息状态只有 0 和 1

比如我们要是存储一个用户一年的打卡情况,我们也就用内存365bit(用0表示未打卡,用1表示打卡),也就46个字节左右

Bitmap是一串连续的2进制数字(0或1),每一位所在的位置为偏移(offset),在bitmap上可执行AND,OR,XOR,NOT以及其它位操作。

应用场景

签到统计、状态统计

命令描述
setbit key offset value为指定key的offset位设置值
getbit key offset获取offset位的值
bitcount key [start end]统计字符串被设置为1的bit数,也可以指定统计范围按字节
bitop operration destkey key[key…]对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。
BITPOS key bit [start] [end]返回字符串里面第一个被设置为1或者0的bit位。start和end只能按字节,不能按位

设计一个测试
在这里插入图片描述

-----------setbit----------------------------
127.0.0.1:6379> setbit sign 1 0 # 设置星期一未打卡
(integer) 0
127.0.0.1:6379> setbit sign 2 1 # 设置星期二打卡
(integer) 0
127.0.0.1:6379> setbit sign 3 1
(integer) 0
127.0.0.1:6379> setbit sign 4 0
(integer) 0
127.0.0.1:6379> setbit sign 5 1
(integer) 0
127.0.0.1:6379> setbit sign 6 1
(integer) 0
127.0.0.1:6379> setbit sign 7 0 

-----------getbit----------------------------
127.0.0.1:6379> getbit sign 3 # 查看星期三打卡情况
(integer) 1
127.0.0.1:6379> getbit sign 7 # 查看星期日打卡情况
(integer) 0
127.0.0.1:6379> 
-----------bitcount----------------------------
127.0.0.1:6379> bitcount sign # 查看本周打卡情况
(integer) 4
127.0.0.1:6379> 


标签:127.0,0.1,redis,BitMaps,6379,integer,打卡,sign
来源: https://blog.csdn.net/qq_46489085/article/details/121718849

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有