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就可以实现统计活跃用户之类的操作了。

  • 相关阅读:
    nginx设置开机自启
    sublimeText3和phpstrom使用
    快捷键整理
    nginx日志分割及备份
    nginx日志设置
    nginx上部署PHP
    C语言三种参数传递方式
    浮点数在内存中的存储方式
    windows下git安装过程
    偏移二进制编码和二进制补码的区别
  • 原文地址:https://www.cnblogs.com/itplay/p/11088919.html
Copyright © 2011-2022 走看看