基於MongoDB的好友訊息動態的實現思路

2021-08-31 20:02:50 字數 1089 閱讀 6598

為了方便本人閱讀,文字格式略有調整。

首先,對每個使用者,分別設計以下 collection

//by nightsailer.com

activity_streaming.feed, 屬性分別為:

$schema = array(

_id, 使用者id

followed_art => array(), 使用者關注的作品id列表

followed_people=>array(), 使用者關注的人id列表

my_art => array() 使用者的作品id 列表

)//by nightsailer.com

activity_stream.user:

_idtype=> 動態steam的型別(我關注的作品,我的作品,我關注的人)

stream_target => 對應動態stream的物件(作品id,人id)

stream => array() fifo陣列,存放activity的dbref

time => int 最後一次activity的時間戳

activity_stream.site

_id uuid

type: 動態型別

data: hash 動態資料

time

activity_stream.queue

同 activity_stream.site

存放待處理的動態佇列

我們使用非同步處理方式,按照以下流程:

1. 當使用者某些動作產生乙個事件後,將事件push到activity_stream.queue, 通知worker進行處理

2. worker 被喚醒,從activity_stream.queue中提取未處理的事件。

3. worker 將事件放入activity_stream.site,作為全站動態廣播

4. worker 從activity_streaming.feed中反向查詢事件的作品或作者是否有對應的人,如果有,則將此事件id

push到activity_stream.user 的對應fifo陣列中。

(這是mongodb最興奮的地方,可以直接查詢陣列中的值,只要對陣列進行索引)

這樣,使用者可以:

基於docker的MongoDB教程

參考文章 一天時間內 從docker學習 到安裝mongodb 及入門使用mongodb 關於docker的具體理論及後續的深入操作並沒有 這是乙份操作文件!docker search mongo 查詢mongodb的相關映象 git pull mongo 拉取名為mongo的映象 docker r...

微信,找回好友 群聊使用者撤回的訊息

coding utf 8 import itchat from itchat.content import text from itchat.content import import sys import time import re import os msg information face ...

php基於Redis訊息佇列實現的訊息推送的方法

基本知識點 重點用到了以下命令實現我們的訊息推送 邏輯分析 實現 普通任務指令碼 phpforeach user list as item redispushqueue 守護程序執行 nohup php yourpath redispushqueue.php 開啟守護程序執行,修改檔案之後需要從新啟...