1. bitmap使用1:统计所有用户1年的登录天数
命令一览: setbit
getbit
bitcount
需求1: 电商网站统计所有用户一年的登录天数, 比如用户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的结果放入一个集合中即可!!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。