Redis中的GETBIT和SETBIT

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

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

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

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

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

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就能够实现统计活跃用户之类的操做了。code

相关文章
相关标签/搜索