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