redis10---Setbit 的实际应用
生活随笔
收集整理的這篇文章主要介紹了
redis10---Setbit 的实际应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Setbit 的實際應用
場景: 1億個用戶, 每個用戶 登陸/做任意操作 ,記為 今天活躍,否則記為不活躍
每周評出: 有獎活躍用戶: 連續7天活動,每月評,等等。思路:
Userid dt active
1 2013-07-27 1
1 2013-0726 1如果是放在表中, 1:表急劇增大,2:要用group ,sum運算,計算較慢
用: 位圖法 bit-map
Log0721: ‘011001...............0’ //一天:1,2,5號用戶登陸了
......
log0726 : ‘011001...............0’ //1,2,5號用戶登陸了
Log0727 : ‘0110000.............1’1: 記錄用戶登陸:
每天按日期生成一個位圖, 用戶登陸后,把user_id位上的bit值置為12: 把1周的位圖 and 計算, 各位都為1的,即是連續登陸的用戶redis 127.0.0.1:6379> setbit mon 100000000 0
(integer) 0
redis 127.0.0.1:6379> setbit mon 3 1
(integer) 0
redis 127.0.0.1:6379> setbit mon 5 1
(integer) 0
redis 127.0.0.1:6379> setbit mon 7 1
(integer) 0
redis 127.0.0.1:6379> setbit thur 100000000 0
(integer) 0
redis 127.0.0.1:6379> setbit thur 3 1
(integer) 0
redis 127.0.0.1:6379> setbit thur 5 1
(integer) 0
redis 127.0.0.1:6379> setbit thur 8 1
(integer) 0
redis 127.0.0.1:6379> setbit wen 100000000 0
(integer) 0
redis 127.0.0.1:6379> setbit wen 3 1
(integer) 0
redis 127.0.0.1:6379> setbit wen 4 1
(integer) 0
redis 127.0.0.1:6379> setbit wen 6 1
(integer) 0
redis 127.0.0.1:6379> bitop and res mon feb wen
(integer) 12500001如上例,優點:
1: 節約空間, 1億人每天的登陸情況,用1億bit,約1200WByte,約10M 的字符就能表示
2: 計算方便
?
轉載于:https://www.cnblogs.com/yaowen/p/8282439.html
總結
以上是生活随笔為你收集整理的redis10---Setbit 的实际应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器报错您的主机中的软件中止了一个已建
- 下一篇: jmeter的基本功能使用详解