命令一览: setbit
getbit
bitcount
java
需求1: 电商网站统计全部用户一年的登陆天数, 好比用户id为, 咱们想要统计用户每一年的登陆天数, 好比以下
用户名 | 用户id | 本年登陆天数 |
---|---|---|
张三 | 001 | 100 |
李四 | 002 | 200 |
王五 | 003 | 365 |
使用redis的bitmap来实现的话, 能够这么弄: redis
setbit key offset value
shell
setbit ulogin:001 20200101 1网站
查询某天:getbit key offset
code
统计全部该key的1的值的个数(也就是登陆天数)bitcount key
get
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
127.0.0.1:6379> getbit ulogin:001 20200102 (integer) 1
127.0.0.1:6379> bitcount ulogin:001 (integer) 3
若是要统计全部的用户的登陆天数, 咱们平时天天记录:it
127.0.0.1:6379> setbit ulogin:002 20200101 1 (integer) 0 127.0.0.1:6379> setbit ulogin:003 20200102 1 (integer) 0
若是要统计全部用户, 在java中利用前缀的命名规则ulogin: 在一个for循环中遍历全部的id列表便可, 把调用redis的结果放入一个集合中便可!!for循环