Redis 非关 kv型
位图
- 位图不是真正的数据类型,它是定义在字符串类型中
01100001 97 61 a
01100010 98 62 b
- 一个字符串类型的
值
最多能存储512M字节的内容 位上限:2^32
常用命令
- SETBIT
\x : 16进制
- 没有key值
- GETBIT命令
- 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操作位图