每日学习 - 尚硅谷阳哥redis7笔记

redis位图bitmap

一句话:由0和1状态表现的二进制位的bit数组
看需求:

​ 1.用户是否登录过Y、N,比如京东每日签到送京豆。

​ 2.电影、广告是否被点击播放过。

​ 3.钉钉打卡上下班,签到统计。

是什么:

​ BIT arrays(or simply bitmaps, 我们可以称之为位图)

00101001

一个字节(一个byte)=8位

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

位图本质是数组,它是基于String 数据类型的按位的操作。该数组由多个二进制组成,每个二进制位都对应一个偏移量(我们称之为一个索引)。

Bitmap支持的最大位数是232位,它可以极大的节约存储空间,使用512M内存就可以存储多达42.9亿的字节信息(232 = 4294967296)

能干嘛

​ 用于状态统计

​ Y、N,类似AtomicBoolean

基本命令
命令作用时间复杂度
setbit key offset val给指定key的值第offset赋值valO(1)
getbit key offset获取指定key的第offset位O(1)
bitcount key start end返回指定key中[start,end]中为1的数量O(n)
bitop operation destkey eky对不同的二进制存储数据进行位运算(AND、OR、NOT、XOR)O(n)
setbit

用法:setbit key offset val

​ set 键 偏移位 只能零或者1

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

示例:

127.0.0.1:6379> SETBIT k1 1 1

(integer) 0

getbit

用法: getbit key offset

示例:

127.0.0.1:6379>GETBIT k1 0

(integer) 0

strlen

统计字节数占用多少

在这里插入图片描述

bitcount

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

127.0.0.1:6379> SETBIT uid:login123 1 1

(integer) 0

127.0.0.1:6379> SETBIT uid:login123 2 1

(integer) 0

127.0.0.1:6379> SETBIT uid:login123 3 1

(integer) 0

127.0.0.1:6379> BITCOUNT uid:login123

(integer) 3

bitop

bitop operation destkey key

在这里插入图片描述

应用场景

一年365天,全年天天登录占用多少字节
在这里插入图片描述

按年去存储一个用户的签到情况,365天只需要365/8 ≈ 46Byte , 1000w用户量一年也只需要44MB就足够了。

假如是亿级的系统,

每天使用1个1亿位的Bitmap约占12MB的内存(10^8/8/1024/1024), 10天的Bitmap的内存开销约120MB,内存压力不算太高。

此外,在实际使用时, 最好对Bitmap设置过期时间,让Redis自动删除不在需要的签到记录以节省内存开销。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
尚硅谷是一个教育机构,他们提供了一份关于Redis学习笔记。根据提供的引用内容,我们可以了解到他们提到了一些关于Redis配置和使用的内容。 首先,在引用中提到了通过执行命令"vi /redis-6.2.6/redis.conf"来编辑Redis配置文件。这个命令可以让你进入只读模式来查询"daemonize"配置项的位置。 在引用中提到了Redis会根据键值计算出应该送往的插槽,并且如果不是该客户端对应服务器的插槽,Redis会报错并告知应该前往的Redis实例的地址和端口。 在引用中提到了通过修改Redis的配置文件来指定Redis的日志文件位置。可以使用命令"sudo vim /etc/redis.conf"来编辑Redis的配置文件,并且在文件中指定日志文件的位置。 通过这些引用内容,我们可以得出结论,尚硅谷Redis学习笔记涵盖了关于Redis的配置和使用的内容,并提供了一些相关的命令和操作示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Redis学习笔记--尚硅谷](https://blog.csdn.net/HHCS231/article/details/123637379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Redis学习笔记——尚硅谷](https://blog.csdn.net/qq_48092631/article/details/129662119)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值