zoukankan      html  css  js  c++  java
  • 【命令】GETBIT/SETBIT

    我们在登陆某些博客网站或者视频网站的时候,网站往往会记录我们是否阅读了某篇文章,或者是观看了某个视频。

    如果用传统的mysql数据库实现,如果用户数量多,文章和视频也多的情况下,那么则会给数据库带来很大的压力。

    而用Redis的GETBIT和SETBIT则会简单得多。
    我们以视频为例,我们用bitmap来记录用户们是否已经观看了某一个视频,一个视频对应一个bitmap。例如

    1
    2
    key:   video:1201
    value: 000000...0000

    key以视频英文名video+冒号+id标记。
    value就是一个bitmap。一位(bit)有两种可能,0或者1。0代表未看,1代表已经看过了。
    而位置(offset)代表的就是user id。例如第200位就代表user_id为200的用户是否观看过id为1201的视频。

    设置

    1
    2
    3
    4
    # SETBIT key offset value
     
    SET video:1201 200 1
    # 上面的命令就是设置ID为200的用户,已经看过了ID为1201的视频。

    查询

    1
    2
    3
    # GETBIT key offset
    GETBIT video:1201 200
    # 上面的命令就是查询ID为200的用户是否观看了ID为1201的视频

    当然您也可以一个用户对应一个bitmap,bitmap中的位代表一个视频是否已经被观看。

    另外文章中也将到目前非常流行的打卡或者是登陆记录也可以用相似的设计实现。
    例如用一个bitmap记录所有用户的登陆情况,bitmap中的一位代表一个用户当天是否有登陆,0代表没登陆,1代表有登陆。
    每天生成一个bitmap。

    通过统计多天bitmap就可以实现统计活跃用户之类的操作了。

  • 相关阅读:
    CCF NOI1121 逆波兰表达式
    Vijos P1217 乒乓球【模拟+输入输出】
    Vijos P1304 回文数【回文+进制】
    NUC1041 数字三角形【DP】
    CCF NOI1070 汉诺塔游戏
    CCF NOI1069 分解因数
    CCF NOI1149 N皇后问题
    CCF NOI1153 素数环
    CCF NOI1170 质因数分解
    POJ NOI MATH-7832 最接近的分数
  • 原文地址:https://www.cnblogs.com/itplay/p/11088919.html
Copyright © 2011-2022 走看看