• 技术文章 >数据库 >Redis

    简单聊聊Redis中GETBIT和SETBIT

    藏色散人藏色散人2021-09-20 17:10:29转载112

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

    推荐学习:《redis教程

    以上就是简单聊聊Redis中GETBIT和SETBIT的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    专题推荐:redis
    上一篇:一起聊聊redis的scan操作 下一篇:总结分享20个关于Redis的经典面试题(附答案分析)
    线上培训班

    相关文章推荐

    • redis整数集不能降级?为什么?• PHP+Redis解决订单限流的实际问题• 分享TP6框架中Redis操作服务类的记录• php 连接不上redis怎么办

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网