开发者

Redis位图bitmap操作

开发者 https://www.devze.com 2022-12-08 11:18 出处:网络 作者: 码农的秃头之旅
目录定义强势点SETBIT 命令GETBIT 命令BITCOUNT 命令应用场景案例定义 1、位图不是真正的数据类型,它是定义在字符串类型中2、一个字符串类型的值最多能存储512M字节的内容,位上限:2^32
目录
  • 定义
  • 强势点
    • SETBIT 命令
    • GETBIT 命令
    • BITCOUNT 命令
  • 应用场景案例

    定义

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

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

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

    强势点

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

    SETBpSYOZxcEIT 命令

    • 说明:设置某位置上的二进制php值
    • 语法: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 mandroidykey1 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开发者_NewSQL,上线设置为1
    # 示例
        用户名为 user1:login 的用户,今年第1天上线,第30天上线
        SETBIT user1:login 0 1 
        SETBIT user1:login 29 1
       android BITCOUNT user1:login
    

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

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消