第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

萌新求教!Java后臺(tái)是如何設(shè)計(jì)已讀消息和未讀消息的結(jié)構(gòu),或者有什么適合的工具十分感謝

萌新求教!Java后臺(tái)是如何設(shè)計(jì)已讀消息和未讀消息的結(jié)構(gòu),或者有什么適合的工具十分感謝

猛跑小豬 2019-07-27 00:45:53
如題,想做一個(gè)消息提示,具體問(wèn)題如下如果系統(tǒng)給所有用戶推送了一條站內(nèi)消息,如何區(qū)分用戶是否已讀,從而實(shí)現(xiàn)取消紅點(diǎn)或具體未讀消息數(shù)量,總不可能所有消息全部放在一個(gè)表吧,那如果有1萬(wàn)個(gè)用戶,那不是同樣的消息要發(fā)1萬(wàn)條,如果是數(shù)據(jù)庫(kù)的話,長(zhǎng)久下來(lái),負(fù)擔(dān)太大了吧,當(dāng)然更不可能放在內(nèi)存中,不然重啟項(xiàng)目,消息就全沒(méi)了。所以敢問(wèn)大佬,有啥好的設(shè)計(jì)方案,不限數(shù)據(jù)庫(kù),redis,或者其他工具
查看完整描述

2 回答

?
一只名叫tom的貓

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊

如果系統(tǒng)有redis可以這么處理,redis的set保存已經(jīng)讀取得消息id=messageIdeg:{messageid1,messageid2...}。userid_read_message作為鍵(每個(gè)用戶存一條,保存每個(gè)用戶已經(jīng)讀取的所有messageid)最終既是這種結(jié)構(gòu)your_user_id_read_message:{messageid1,messageid2...}那么此時(shí)已讀消息數(shù)量和具體消息的id可知,消息自然可知直接用id查表。
沒(méi)有redis直接用數(shù)據(jù)庫(kù)也行,反正建一張表記錄用于已經(jīng)讀取的消息id列表。拼接成字符串也好直接存JSON格式的也好,都行。目的是通過(guò)用戶id能獲取到該用戶已經(jīng)讀取的消息ID。每個(gè)用戶的每條已讀消息存一條記錄這樣最好,直接通過(guò)sql就可以把這個(gè)已讀未讀,以及具體消息內(nèi)容都能查出來(lái)。
站內(nèi)信在數(shù)據(jù)庫(kù)建表common_notice_message用于保存具體的站內(nèi)信,一條就算你發(fā)10W個(gè)人也指用存一條。那么notin第一步中的已讀messageid就可以查到所有未讀的消息,自然數(shù)量和具體內(nèi)容也就出來(lái)了。當(dāng)用戶讀取了未讀消息(web或者app上調(diào)用了讀具體消息的接口)直接在redis的已讀消息id的set中新增一條記錄。
                            
查看完整回答
反對(duì) 回復(fù) 2019-07-27
?
MM們

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊

使用redis的hash實(shí)現(xiàn):
hash的名稱unread_msg_count
hash的鍵user_id
hash的值未讀數(shù)
如果有新消息可以使用hincrby(unread_msg_count,user_id,1)來(lái)處理
用戶已讀時(shí),hincrby(unread_msg_count,user_id,-1)來(lái)減1或者h(yuǎn)del(unread_msg_count,user_id)
性能和持久性要求都可以保證
                            
查看完整回答
反對(duì) 回復(fù) 2019-07-27
  • 2 回答
  • 0 關(guān)注
  • 459 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)