Bootstrap

redis | 认识非关系数据库Redis的位图数据类型

位图

  1. 位图不是真正的数据类型,它是定义在字符串类型中

在这里插入图片描述

01100001 97 61 a
01100010 98 62 b

  1. 一个字符串类型的最多能存储512M字节的内容 位上限:2^32

常用命令

  1. SETBIT

在这里插入图片描述

\x : 16进制

在这里插入图片描述

在这里插入图片描述

  • 没有key值

在这里插入图片描述

  1. GETBIT命令

在这里插入图片描述

  1. BITCOUNT 命令

在这里插入图片描述

应用场景

假设现在我们希望记录自己网站上的用户的上线频率,比如说,计算用户A上线了多少天,用户B上线了多少天,诸如此类,以此作为数据,从而决定让哪些用户参加重要活动一这个模式可以使用SETBIT和BITCOUNT来实现。

比如说,每当用户在某一天上线的时候,我们就使用SETBIT,,以用户名作为key,将那天所代表的网站的上线日作为offset参数,并将这个offset上的为设置为1。

  • 举个例子,如果今天是网站上线的第100天,而用户peter在今天阅览过网站,那么执行命令SETBIT peter1001;如果明天peter也继续阅览网站,那么执行命令SETBIT peter1011,以此类推。

  • 当要计算peter总共以来的上线次数时,就使用BITCOUNT命令:执行BITCOUNT peter,得出的结果就是peter上线的总天数0

网站运行10年,占用的空间也只是每个用户10*365比特位(bit),也即是每个用户456字节。对于这种大小的数据来说,BITCOUNT的处理速度就像GET和INCR操作一样快。

python操作位图

在这里插入图片描述
在这里插入图片描述

;