REDIS04_bitmap的概述用途setbitgetbitbigcountbittopstrlen命令使用

Posted 所得皆惊喜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了REDIS04_bitmap的概述用途setbitgetbitbigcountbittopstrlen命令使用相关的知识,希望对你有一定的参考价值。

①. bitmap的概述

  • ①. Bit array我们可以称之为位图,由许许多多的小格子组成,每一个小格子里面只能放1或者0,用它判断Y/N状态说的专业,每一个个小格子就是一个个的bit

  • ②.用String类型作为底层数据结构实现的一种统计二值状态的数据类型位图本质是数组,它是基于String数据类型的按位的操作。该数组由多个二进制位组成,每个二进制位都对应一个偏移量(我们可以称之为一个索引或者位格)。Bitmap支持的最大位数是2^32 位,它可以极大的节约存储空间,使用512M内存就可以存储多大42.9亿的字节信息(2^32 = 4294967296)

  • ③. 由0和1状态表现的二进制位的bit数组

②. bitmap用在哪些地方

  • ①. 用户是否登陆过Y、N,比如京东每日签到送京豆

  • ②. 电影、广告是否被点击播放过

  • ③. 钉钉打卡上下班,签到统计

  • ④. 统计指定用户一年之中的登陆天数

  • ⑤. 某用户按照一年365天,哪几天登陆过?哪几天没有登陆?全年中登录的天数共计多少?

③. 基本命令

  • ①. 基本命令汇总

  • ②. setbit key offset value(setbit 键 偏移位 只能零或者1)
    Bitmap的偏移量是从零开始算的

  • ③. getbit key offset

  • ④. setbit和getbit案例说明:按照天、按照年

  • ⑤. bitmap的底层编码说明,get命令操作如何

  1. 实质是二进制的ascii编码对应
  2. redis里用type命令看看bitmap实质是什么类型???String类型
  • ⑥. strlen:统计字节数占用多少
    不是字符串长度而是占据几个字节,超过8位后自己按照8位一组一byte再扩容

  • ⑦. bitcount
    全部键里面含有1的有多少个?
    一年365天,全年天天登陆占用多少字节

  • ⑧. bitop
    连续2天都签到的用户
    加入某个网站或者系统,它的用户有1000W,做个用户id和位置的映射
    比如0号位对应用户id:uid-092iok-lkj
    比如1号位对应用户id:uid-7388c-xxx

redis> SETBIT bits-1 0 1        # bits-1 = 1001
(integer) 0

redis> SETBIT bits-1 3 1
(integer) 0
 
redis> SETBIT bits-2 0 1        # bits-2 = 1011
(integer) 0
 
redis> SETBIT bits-2 1 1
(integer) 0
 
redis> SETBIT bits-2 3 1
(integer) 0
 
redis> BITOP AND and-result bits-1 bits-2
(integer) 1
 
redis> GETBIT and-result 0      # and-result = 1001
(integer) 1
 
redis> GETBIT and-result 1
(integer) 0
 
redis> GETBIT and-result 2
(integer) 0

redis> GETBIT and-result 3
(integer) 1

以上是关于REDIS04_bitmap的概述用途setbitgetbitbigcountbittopstrlen命令使用的主要内容,如果未能解决你的问题,请参考以下文章

REDIS08_bitmap的概述用途setbitgetbitbigcountbittopstrlen命令使用

REDIS08_bitmap的概述用途setbitgetbitbigcountbittopstrlen命令使用

REDIS08_bitmap的概述用途setbitgetbitbigcountbittopstrlen命令使用

利用redis setbit和bitmap统计用户数

Redis系列第四篇之Bitmap

redis中setbit bitcount命令详解