Redis中的GETBIT和SETBIT
一:场景
Redis是in-memery数据库,其优势不言而喻。在学习到strings类型的常见命令的时候,对GETBIT和SETBIT的意义并不是非常了解,所以就搜索了一下相关文章。看到一篇介绍GETBIT和SETBIT的应用的文章,感觉非常强大,记录如下:我们在登陆某些博客网站或者视频网站的时候,网站往往会记录我们是否阅读了某篇文章,或者是观看了某个视频。如果用传统的mysql数据库实现,如果用户数量多,文章和视频也多的情况下,那么则会给数据库带来很大的压力,而用Redis的GETBIT和SETBIT则会简单得多。
二:举例
我们以视频为例,我们用bitmap来记录用户们是否已经观看了某一个视频,一个视频对应一个bitmap。例如
SETBIT key offset value key: video:1201 value: 000000...0000 offset: 200
注:
key:以视频英文名video+冒号+id标记。
value:就是一个bitmap。一位(bit)有两种可能,0或者1。0代表未看,1代表已经看过了。
offset:代表的就是user id。例如第200位就代表user_id为200的用户是否观看过id为1201的视频。
SETBIT video:1201 200 1
# 上面的命令就是设置ID为200的用户,已经看过了ID为1201的视频。
GETBIT video:1201 200
# 上面的命令就是查询ID为200的用户是否观看了ID为1201的视频。

浙公网安备 33010602011771号