首页 > 数据库 >Redis之bitmap

Redis之bitmap

时间:2022-09-27 18:34:09浏览次数:49  
标签:字节 Redis bitmap key 返回值 bit offest

一、bitmap介绍

bitmap,也叫位图,是一种实现对位的操作的'数据结构',用一个bit位来表示一个东西的状态,我们都知道bit位是二进制,所以只有两种状态,0和1。

  • bitmap同样属于redis的string数据类型,Redis中一个字符串类型的值最多能存储512M的内容,每个字符由多个字节组成,一个字节由8个bit位构成,所以bitmap最多可以存储2^32位
  • 虽然底层位string,但是redis为bitmap提供了一套单独的命令,所以用法区别与字符串,我们可以讲位图看成是数组,里面全是0和1表示的内容(二进制位数组),数组的下标在bitmap中叫做offest(偏移量)

bitmap的出现就是为了大数据量,但是前提是需要存储的内容只能由两种状态,因为每个bit只能表示两种状态

二、操作命令

1、setbit key offset value

给key值在指定索引位置上(offest)设置一个value,因为bit位所以value只能为0和1,否则会出现错误(error) ERR bit is not an integer or out of range,offest的范围为0-2^32,返回值为set之前的值,默认全部为0

2、getbit key offset

获取key在指定位置上的值,返回值为0或者1,如果未set,则默认为0

3、bitcount key [start end]

统计key在指定范围内的1的出现次数,0, -1或者不加参数表示统计全部

4、bitbops key bit [start end]

统计key中指定范围内的bit(0或1)第一次出现的索引位置,没有则返回-1

5、bittop operation destkey key [key ...]

将两个或者多个key的二进制位进行或、与的操作然后将结果赋值给新的key(destkey)

因为底层是字符串,所以我们可以用strlen命令查看一下bitmap存储所占用的长度,
strlen命令返回的是字符串所占用的长度,因为一个数字占用一个字节,而bit这个key只set偏移量为0的值,未开辟新的内存空间,所以strlen返回值为1

因为一个bit占8个字节,所以我们在索引位置为8的地方添加一个值

可以看到新开了一个字节空间,所以返回值为2
通过这样的设计,比如我们想实现一个100万个用户一年(365天)的签到情况只需要 365/8 * 100000 / 1048576=43.86M的空间

三、getbit理解

上面我们了解了到bitmap的占用空间小,还有一个特点是执行效率高,上述命令getbit key offest在0-2^32范围内获取到的bit时间复杂度竟然为O(1)
明天再写..

标签:字节,Redis,bitmap,key,返回值,bit,offest
From: https://www.cnblogs.com/LiuFqiang/p/16735524.html

相关文章

  • 【Redis】哨兵挂了,主从库还能切换吗?
     上一节,了解了哨兵机制,它可以实现主从库的自动切换。通过部署多个实例,就形成了哨兵集群。哨兵集群中的多个实例共同判断,可以降低对主库下线的误判率。但是,还有一个要考......
  • redis启动一段时间后报错,提示数据无校解决方法
    自己在手欠的情况下无意将window10升级成为了window11,就发生了一系列扯淡的问题。如下图就是我在window11系统下启动redis-server后出现的报错。  原因就是window......
  • 【Redis】哨兵机制
     哨兵其实就是一个运行在特殊模式下的redis进程,主从库实例运行的同时,它也在运行。哨兵主要负责的就是三大任务:监控、选主和通知。我们先看监控。监控是指哨兵进程在运行......
  • Redis-缓存穿透 缓存击穿 缓存雪崩 缓存预热 缓存更新 缓存降级
    在实际生产环境中,缓存的使用规范一直备受重视的,如果使用的不好,很容易遇到缓存穿透、缓存击穿、雪崩等严重异常情景,从而给系统带来难以预料的灾害。为了避免缓存使用不当带......
  • redis 集群
    全网最新相关内容标题-链接 发布日期 简介 来源 Redis集群的三种配置方式案例_小影~的博客-CSDN博客... 2022-9-1902:37:56 藍主从......
  • 《redis 卸载》问题 全网最全最新内容汇总(每月更新一次)
    建立了一个群,大家可以加入进来,一起讨论程序员的相关话题,包括技术,升职,面试,职场,更重要的讨论如何通过技术赚钱。加+V:shiguanghui1001(时光会全拼),回复redis,免费赠送《全网re......
  • redis 并发写
      全网最新相关内容标题-链接 发布日期 简介 来源 redis并发写数据时解决方案_TebYue的博客-CSDN博客_redis... 2022-3-302:00:3......
  • redis 做缓存
      全网最新相关内容标题-链接 发布日期 简介 来源 轻松理解redis做缓存的流程_小浩丶的博客-CSDN博客_redis... 2022-4-522:59:0......
  • 10.redis 查看数据
      全网最新相关内容标题-链接 发布日期 简介 来源 大数据技术之HBase+Redis详解_wespten的博客-CSDN博客... 2022-9-2003:56:42......
  • redis 使用 全网最全最新内容汇总(每月更新一次)
    建立了一个群,大家可以加入进来,一起讨论程序员的相关话题,包括技术,升职,面试,职场,更重要的讨论如何通过技术赚钱。加+V:shiguanghui1001(时光会全拼),回复redis,免费赠送《全网re......