zoukankan      html  css  js  c++  java
  • Redis中的GETBIT和SETBIT(转载)

    Redis是in-memery的数据库,其优势不言而喻。
    详细可以阅读一下官网的介绍。https://redis.io

    其主要有五种数据类型:strings,lists,sets,hashes。
    在学习到strings类型的常见命令的时候,对GETBITSETBIT的意义并不是非常了解,所以就搜索了一下相关文章。看到一篇介绍GETBITSETBIT的应用的文章,感觉非常强大,记录如下:

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

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

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

    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的视频。

    设置

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

    查询

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

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

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

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

  • 相关阅读:
    linux 文件内容乱码 文件内容转码
    Loadrunner获取响应里面的内容
    定位获取下拉框元素
    RIDE转码问题
    api接口登录及打印返回值
    获取token值
    RIDE安装操作(二)
    from selenium import webdriver 运行报错解决方案
    超声和病理的web实现方案
    QT中字符串和整形相互转化
  • 原文地址:https://www.cnblogs.com/K-artorias/p/8463286.html
Copyright © 2011-2022 走看看