关于redis:redis学习笔记之bitmap用法之统计用户全年登录天数

1. bitmap应用案例

需要: 电商网站统计所有用户一年的登录天数, 比方用户id为, 咱们想要统计用户每年的登录天数, 比方如下

用户名 用户id 本年登录天数
张三 001 100
李四 002 200
王五 003 365

应用redis的bitmap来实现的话, 能够这么弄:

setbit key offset value

setbit ulogin:001 20200101 1

  • ulogin:001是bitmap的key
  • 20200101是offset, 记录某一天的登录值的key标识
  • 当天登录了记为1, 没有记为0;

查问某天:
getbit key offset

统计所有该key的1的值的个数(也就是登录天数)
bitcount key

1.1 记录某天登录操作-setbit

127.0.0.1:6379> setbit ulogin:001 20200101 1
(integer) 0
127.0.0.1:6379> setbit ulogin:001 20200102 1
(integer) 0
127.0.0.1:6379> setbit ulogin:001 20200103 1
(integer) 0
127.0.0.1:6379> setbit ulogin:001 20200104 0
(integer) 0

1.2 查问某天登录了没有-getbit

127.0.0.1:6379> getbit ulogin:001 20200102
(integer) 1

1.3 查问用户总共登录了几天-bitcount

127.0.0.1:6379> bitcount ulogin:001
(integer) 3

如果要统计所有的用户的登录天数, 咱们平时每天记录:

127.0.0.1:6379> setbit ulogin:002 20200101 1
(integer) 0
127.0.0.1:6379> setbit ulogin:003 20200102 1
(integer) 0

1.4 统计所有用户登录天数

如果要统计所有用户, 在java中利用前缀的命名规定ulogin: 在一个for循环中遍历所有的id列表即可, 把调用redis的后果放入一个汇合中即可!!

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理