題目描述:
有五個(gè)運(yùn)動(dòng)手環(huán)俗冻,ID分別是1001礁叔、1002、1003迄薄、1004琅关、1005,每個(gè)手環(huán)每隔一分鐘會(huì)上傳心跳 heartbeat讥蔽、運(yùn)動(dòng)步數(shù) steps 以及其他數(shù)據(jù)涣易,需求是:每天要統(tǒng)計(jì)用戶(hù)的這些數(shù)據(jù)!
問(wèn):使用什么類(lèi)型來(lái)存儲(chǔ)這些數(shù)據(jù)冶伞?該如何存儲(chǔ)新症?
先來(lái)分析一下這個(gè)業(yè)務(wù):
- 首先要清楚一點(diǎn),Redis是沒(méi)有條件查找指令的响禽,所以說(shuō)要滿(mǎn)足查詢(xún)條件账劲,在存儲(chǔ)數(shù)據(jù)的時(shí)候就應(yīng)該設(shè)法按照可以滿(mǎn)足這種查詢(xún)條件的方式去存儲(chǔ)。
- 需求是要查看每項(xiàng)功能每天的數(shù)據(jù)金抡,所以應(yīng)該是每個(gè)手環(huán)的每項(xiàng)功能作為一個(gè)key來(lái)存儲(chǔ)瀑焦,而且是每天,所以時(shí)間也要加上梗肝。那么暫時(shí)可以確定Redis中這個(gè)key應(yīng)該怎么去存儲(chǔ)榛瓮,比如 1001_20191207_heartbeart。
- 上一步確定了怎么去存儲(chǔ)key巫击,那么應(yīng)該就能想到用什么結(jié)構(gòu)去存儲(chǔ)了吧禀晓。對(duì),用鏈表坝锰,也就是Redis常用五種數(shù)據(jù)類(lèi)型中的 list粹懒。
好了,分析完了也就基本清楚了顷级,下面簡(jiǎn)單看一下效果:
127.0.0.1:6379> lpush 1001_20191207_heartbeart 68
(integer) 1
127.0.0.1:6379> lpush 1001_20191207_heartbeart 70
(integer) 2
127.0.0.1:6379> lpush 1001_20191207_heartbeart 66
(integer) 3
127.0.0.1:6379> lpush 1001_20191207_heartbeart 71
(integer) 4
127.0.0.1:6379> lrange 1001_20191207_heartbeart 0 -1
1) "71"
2) "66"
3) "70"
4) "68"