redis學習筆記之-(1)-bitmap用法之1-統計全部用戶1年的登陸天數

1. bitmap使用1:統計全部用戶1年的登陸天數

命令一覽: setbit getbit bitcountjava

需求1: 電商網站統計全部用戶一年的登陸天數, 好比用戶id爲, 咱們想要統計用戶每一年的登陸天數, 好比以下
用戶名 用戶id 本年登陸天數
張三 001 100
李四 002 200
王五 003 365

使用redis的bitmap來實現的話, 能夠這麼弄: redis

setbit key offset valueshell

setbit ulogin:001 20200101 1網站

  • ulogin:001是bitmap的key
  • 20200101是offset, 記錄某一天的登陸值的key標識
  • 當天登陸了記爲1, 沒有記爲0;

查詢某天:
getbit key offsetcode

統計全部該key的1的值的個數(也就是登陸天數)
bitcount keyget

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

若是要統計全部的用戶的登陸天數, 咱們平時天天記錄: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

1.4 統計全部用戶登陸天數

若是要統計全部用戶, 在java中利用前綴的命名規則ulogin: 在一個for循環中遍歷全部的id列表便可, 把調用redis的結果放入一個集合中便可!!for循環

相關文章
相關標籤/搜索