国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

flask - web消息通知中,如何用輪詢redis來代替輪詢數(shù)據(jù)庫?

瀏覽:65日期:2023-08-24 15:17:57

問題描述

我想在自己的flask應用中實現(xiàn)簡單的消息通知功能,例如管理員向全體用戶發(fā)公告,或者想某個用戶發(fā)出提醒等功能。

可是在實現(xiàn)過程中遇到了一個難題,情況具體描述如下:

我使用sse機制來使服務器向客戶端發(fā)送消息,可是這里出現(xiàn)了問題,就是發(fā)送消息的模塊并不知道什么時候應該發(fā)送消息,例如當用戶A評論了用戶B的博客時,這時就需要通知用戶B,我們此時需要通知發(fā)送模塊:“你該向B發(fā)送消息了”,如何通知發(fā)送模塊呢?

我想到的就是輪詢數(shù)據(jù)庫,但是感覺這樣太考驗服務器的抗壓了,百度到說:每當對應的數(shù)據(jù)表更新,就產(chǎn)生一個消息到Redis中,然后輪詢Redis。

這樣聽起來挺好,可是在實現(xiàn)中遇到了很多問題:

例如:(1)redis是key-value存儲,當管理員既要給A發(fā)消息,又要給B,C等發(fā)消息,此時用key該如何區(qū)分?

(2)假設現(xiàn)在要給用戶B發(fā)消息,那么會產(chǎn)生對應的消息存儲在redis中,如果此刻 用戶B并未登錄呢,難道用戶B一周不登錄,該消息就會在redis中一周嗎? 【我對redis不太了解,知道是在緩存中存儲,所以感覺不可能在緩存中能存儲一周】

思考兩三天了,望各位前輩能夠指點一二

問題解答

回答1:

redis pub/sub 訂閱/推送 ,是否考慮過使用這樣或者更高級的消息隊列中間件呢。

基本邏輯是這樣的,消息是需要緩存在數(shù)據(jù)庫或者其他nosql的。拆分出消息中心,使用redis的pub/sub體系或者list,其他需要發(fā)送消息的通過redis通知消息中心發(fā)送消息。消息中心檢查用戶是否在線,在線直接發(fā)送消息給用戶(通過websocket之類的,sse也可以),并標記已讀用戶在線是拉取全部未讀消息無論在不在線消息都要入庫。。。由于redis的value是字符串,要區(qū)分用戶,你只要、value是個json字符串就好了。

{ 'target':['a','b'], 'message':'我是要發(fā)送給用戶a和b的消息'}回答2:

key 放消息類型value放業(yè)務數(shù)據(jù),比如序列化以后的dict,想要什么放什么,放多少都行,到時候取出來反序列化就可以直接用了

標簽: web
主站蜘蛛池模板: 中文字幕一区二区三区视频在线 | 午夜剧场成年 | 日本精品视频在线播放 | 一区二区三区在线 | 亚洲视频在线网站 | 亚洲精品久久久久中文 | 久久成人动漫 | 国产精自产拍久久久久久 | 香港aa三级久久三级 | 久久一日本道色综合久久m 久久伊人成人网 | 日本aaaa级 | 亚洲不卡在线 | 高清国产亚洲va精品 | 99久久精品国产国产毛片 | 国内自拍第一页 | 最近韩国日本免费免费版 | 国产在线视频欧美亚综合 | 欧美性另类69xxxx极品 | 中文字幕一区二区三区精彩视频 | 一级毛片真人免费播放视频 | 国内精品久久久久久野外 | 精品国产品国语在线不卡丶 | 在线视频第一页 | 美女张开腿让男生桶出水 | 欧美色视频日本片免费高清 | 亚洲三级在线免费观看 | 91精品欧美综合在线观看 | 欧美在线观看免费一区视频 | 国产精品欧美一区二区在线看 | 日韩www视频 | 最新亚洲人成网站在线影院 | 中文字幕在线视频网 | 真人一级一级特黄高清毛片 | 精品国产欧美一区二区三区成人 | 性刺激免费视频观看在线观看 | 日韩欧美一级 | 小屁孩和大人啪啪 | 97免费公开视频 | 精品久久看 | 99精品在线 | 福利三区 |