鍍金池/ 問(wèn)答/Java  Python  C  Linux  網(wǎng)絡(luò)安全/ 請(qǐng)問(wèn)下私聊,群組這種功能后臺(tái)實(shí)現(xiàn)邏輯以及表設(shè)計(jì)思路

請(qǐng)問(wèn)下私聊,群組這種功能后臺(tái)實(shí)現(xiàn)邏輯以及表設(shè)計(jì)思路

我看我們公司私聊和群聊這種功能在設(shè)計(jì)上是單表的,群里一個(gè)人發(fā)送消息后,沒(méi)當(dāng)前群里每個(gè)人都存儲(chǔ)一條數(shù)據(jù)。我感覺(jué)這樣的方式肯定是有問(wèn)題,群里有1000人,每人發(fā)送一條消息,將要存儲(chǔ)1000*1000記錄,而且很多都是冗余信息。是不是應(yīng)該維護(hù)一個(gè)群組聊天記錄表,根據(jù)當(dāng)前用戶所在的群組去找當(dāng)前群組聊天記錄?還是說(shuō)通過(guò)消息中間件那種訂閱主題模式,每一個(gè)群組做為一個(gè)主題群組成員去訂閱,然后實(shí)現(xiàn)分發(fā)。請(qǐng)問(wèn)下qq實(shí)現(xiàn)這種功能機(jī)制什么,求一個(gè)最佳實(shí)踐,謝謝

回答
編輯回答
笨小蛋

LayIM,這個(gè)是基于這個(gè)第三方的插件頁(yè)面的接入案例,應(yīng)該能給點(diǎn)靈感

2018年2月4日 23:19
編輯回答
兔寶寶

關(guān)于聊天記錄我個(gè)人在設(shè)計(jì)網(wǎng)站消息分發(fā)的時(shí)候邏輯是
設(shè)置一個(gè)字段
0:面向所有用戶的消息(群發(fā))
n:給特定某個(gè)用戶發(fā)的消息(發(fā)給用戶id為n的用戶)
所以你可以像上述方式設(shè)計(jì),在群調(diào)取后臺(tái)記錄時(shí)候調(diào)取后臺(tái)的標(biāo)記為0的消息即可
(不過(guò)我這個(gè)是設(shè)計(jì)為單群(也就是網(wǎng)站全站消息),多群消息的話你可以自己結(jié)合這個(gè)邏輯考慮一下)
(不一定有用,不過(guò)這樣可以節(jié)省數(shù)據(jù)庫(kù)空間,也就是說(shuō),用戶在調(diào)取自己信息的時(shí)候數(shù)據(jù)庫(kù)會(huì)返回用戶id相符和與字段為0的消息)

2018年3月1日 22:26
編輯回答
陌上花

建議使用redis

2017年3月17日 01:42