Redis位图bitmap操作

2022-08-10 19:13:56
目录
定义强势点SETBIT 命令GETBIT 命令BITCOUNT 命令应用场景案例

定义

1、位图不是真正的数据类型,它是定义在字符串类型中
2、一个字符串类型的值最多能存储512M字节的内容,位上限:2^32

# 1MB = 1024KB
# 1KB = 1024Byte(字节)
# 1Byte = 8bit(位)

强势点

可以实时的进行统计,极其节省空间。官方在模拟1亿2千8百万用户的模拟环境下,在一台MacBookPro上,典型的统计如“日用户数”的时间消耗小于50ms,>

SETBIT>
    说明:设置某位置上的二进制值语法:SETBIT key offset value参数:offset - 偏移量 从0开始

    ​ value - 0或者1

    示例:

    # 默认扩展位以0填充
    127.0.0.1:6379> SET mykey ab
    OK
    127.0.0.1:6379> GET mykey
    "ab"
    127.0.0.1:6379> SETBIT mykey 0 1
    (integer) 0
    127.0.0.1:6379> GET mykey
    "\xe1b"
    127.0.0.1:6379> 
    

    GETBIT>
      说明:获取某一位上的值语法:GETBIT key offset

      示例:

      127.0.0.1:6379> GETBIT mykey 3
      (integer) 0
      127.0.0.1:6379> GETBIT mykey 0
      (integer) 1
      127.0.0.1:6379> 
      

      BITCOUNT>
        说明:统计键所对应的值中有多少个 1语法:BITCOUNT key start end参数:start/end 代表的是 字节索引

        示例:

        127.0.0.1:6379> SET mykey1 ab
        OK
        127.0.0.1:6379[4]> BITCOUNT mykey
        (integer) 6
        127.0.0.1:6379[4]> BITCOUNT mykey 0 0
        (integer) 3

        应用场景案例

        # 网站用户的上线次数统计(寻找活跃用户)
            用户名为key,上线的天作为offset,上线设置为1
        # 示例
            用户名为 user1:login 的用户,今年第1天上线,第30天上线
            SETBIT user1:login 0 1 
            SETBIT user1:login 29 1
            BITCOUNT user1:login
        

        到此这篇关于Redis位图bitmap操作的文章就介绍到这了,更多相关Redis位图操作内容请搜索易采站长站以前的文章或继续浏览下面的相关文章希望大家以后多多支持易采站长站!