• 10万用户一年365天的登录情况如何用redis存储,并快速检索任意时间窗内的活跃用户


    1、redsi的bitmap数据结构介绍

    bitmap本质上是一个string类型,只是他操作的是string的某个位是0还是1。

    setbit和getbit 两条命令是对字符串的位操作。每个位只能是0/1,然后用Bitcount命令计算这个key有多少个1。

    例如执行 setbit 'a' 10 1命令
    redis会存以下数据

    Bit运算,BITOP 支持四种表达式运算: AND(交集), OR(并集), XOR(异或) 和NOT(取非), 用法如下:
    BITOP AND result srckey1 srckey2 srckey3 ... srckeyN
    BITOP OR result srckey1 srckey2 srckey3 ... srckeyN
    BITOP XOR result srckey1 srckey2 srckey3 ... srckeyN
    BITOP NOT result srckey
    

    2、记录用户每天的登录情况

    以日期为key,userId为偏移量,执行命令setbit day useId 1
    例如:小梅(userId= 1992)和小明(userId=9877)在 2020-10-01日登录;
    setbit '2020-10-01' 1992 1
    setbit '2020-10-01' 9877 1

    小梅(userId= 1992)和小达(userId=10000)在 2020-10-02日登录;
    setbit '2020-10-02' 1992 1
    setbit '2020-10-02' 10000 1

    3、统计2020-10-01和2020-10-02活跃的用户数量只需要执行命令

    bitcount '2020-10-01'
    bitcount '2020-10-02'

    4、统计2020-10-01到2020-10-02这个时间端活跃的用户数量只需要执行命令

    bitop or 'result' '2020-10-01' '2020-10-02'
    bitcount 'result'

    5、查询小梅在2020-10-01日有没有登录只需执行命令

    getbit '2020-10-01' 1992

  • 相关阅读:
    WPF--常用布局介绍
    NUGET常用命令
    WPF 3D变换应用
    WPF MeshGeometry3D
    一组西门子S7 报文
    西门子与三菱PLC报文比较
    西门子S7报文解析
    C#与西门子PLC通讯
    Django之model admin自定义后台管理
    django ajax
  • 原文地址:https://www.cnblogs.com/yeyongjian/p/13938389.html
Copyright © 2020-2023  润新知