使用 Redis,根據用戶不斷變化的時間偏好,透過 FCM 每天向用戶發送一次訊息,避免重複
上下文
我有很多帖子,每個帖子的讚成票和反對票計數都儲存在我的 Postgres 資料庫中。我正在運行 Gin Golang 伺服器、Flutter 行動應用,並使用 FCM(Firebase 雲端訊息傳遞)向用戶發送通知。
架構問題
首先,這個問題很容易解決。我只是不知道如何有效解決它。
我想大約每天向每個用戶發送一次得票最高的貼文。但是,我想根據用戶在應用程式中最活躍的時間向他們發送通知(不是一次全部發送,即不僅僅是每天上午 12 點)。
所以,假設我在一個名為active_times
的表中追蹤每個使用者的一個條目,該條目有一個我根據他們與行動應用程式(如Postgres 中的time
)互動時更新的欄位。我根據用戶活動不斷更新。
我的直覺告訴我,我應該每隔約 2 小時在我的伺服器中執行一個 cron 作業,該作業會查詢在該約 2 小時視窗內擁有 time
欄位的所有使用者。然後,我將置頂貼文通知發送給這些用戶。然後,我在 Redis 快取中保存一個映射 user_id
s 到 time_notification_recieved
s 的雜湊集,並將自動過期設定為大約 12 小時。對於每個後續查詢,我首先檢查Redis中的if user_id,不要發送給該用戶,否則,發送並將id添加到Redis
。
這將允許我有一個窗口,如果用戶在通知發送給他們後突然登入或直接在應用程式上進行互動(將他們的活動轉移到time
),他們最多會在12小時內收到通知稍後,但通常由於其活動視窗不會發生太大變化,因此大約每24 小時(每天)發送一次。例如,這與他們的 time
視窗是下午 2 點相反,然後在我向他們發送通知後,它更新到下午 4 點,他們在 2 小時內再次受到攻擊。
備註
這是一種有效的方法嗎?我最初考慮使用 Postgres 資料庫來儲存所有這些 ID,但我認為這可能很快就會壓垮資料庫。
此外,Redis 就是用來做這種事的嗎?我可以採取完全不同的方法來做到這一點嗎?
謝謝!
正確答案
在您擁有數百萬用戶之前,您每隔幾個小時執行的任何操作都會非常有效率。
我會在用戶表中有一個單獨的列(例如),其中包含“下一個通知時間”,用於安排通知。我想您不希望出現這樣的情況:使用者正在使用系統,然後立即收到通知,對嗎?
為了確定何時發送通知,您可以使用一個帶有迷你活動直方圖的表格;類似的東西
- 使用者 ID
- 一天中的某個時間
- 櫃檯
然後每當使用者進行「活動」時就會增加計數器。然後,在計算「下次發送通知的時間」時,您可以查看此表以找到該特定使用者的最佳時間。隨著時間的推移,您可以改進演算法,使其變得更加複雜,而不僅僅是活動計數。 (也許您希望在用戶通常活躍之前一小時收到通知?或者可能是他們有時使用該應用程式但不習慣使用的時間,等等)。
以上是使用 Redis,根據用戶不斷變化的時間偏好,透過 FCM 每天向用戶發送一次訊息,避免重複的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

OKX交易平台可以通過移動設備(Android和iOS)和電腦端(Windows和macOS)進行下載。 1. Android用戶可從官方網站或Google Play下載,需注意安全設置。 2. iOS用戶可通過App Store下載,或關注官方公告獲取其他方式。 3. 電腦用戶可從官方網站下載相應系統的客戶端。下載時務必確保使用官方渠道,並在安裝後進行註冊、登錄和安全設置。

Coinbase安全登錄指南:如何避免釣魚網站和詐騙? 網絡釣魚和詐騙日益猖獗,安全訪問Coinbase官方登錄入口至關重要。本文提供實用指南,幫助用戶安全地找到並使用Coinbase最新官方登錄入口,保護數字資產安全。我們將介紹如何識別釣魚網站,以及如何通過官方網站、移動應用或可信第三方平台安全登錄,並提供加強賬戶安全的建議,例如使用強密碼和啟用雙重驗證。 避免因錯誤登錄導致資產損失,請務必仔細閱讀本文!

在迅速發展的加密貨幣市場,選擇合適的交易平台至關重要。本文介紹了全球十大最受推薦的幣圈交易平台,包括 Binance、OKX、Gate.io、Coinbase、FTX、Huobi Global、Bybit、KuCoin、Phemex 和 Kraken。這些平台以其廣泛的交易對、流動性、功能和安全措施而著稱,滿足了從初學者到專業交易者的各種需求。

C# 最初稱為 Cool,由 Microsoft 的 Anders Hejlsberg 發明,並於 2000 年 7 月推出。 C# 是從頭開始設計的,適合託管系統和嵌入式系統。例如,C# 既可以在台式計算機上運行,也可以在物聯網開發人員上運行

本文基於安全性、流動性、交易費用、用戶體驗、幣種選擇、交易功能、聲譽和創新能力八大維度,深度剖析全球領先加密貨幣交易所,並評選出幣安、歐易和芝麻開門位列前三的TOP 3排行榜。 排名考慮了交易所的交易量、交易產品多樣性、用戶友好度、以及安全性和監管合規性等因素。 文章將詳細分析各交易所的優勢和不足,並為不同類型的投資者(新手、專業交易者等)提供選擇建議,助您選擇最合適的加密貨幣交易平台。 請注意,加密貨幣投資高風險,本文僅供參考,不構成投資建議。

是的,可以通過移動應用程序查看大型 XML 文件。這些應用程序提供語法高亮、代碼塊折疊、搜索功能和樹形視圖。推薦的應用程序包括:1. XML Viewer(Android 和 iOS);2. XML Editor & Viewer(Android);3. Code Editor - Viewer(Android);4. Notepad (iOS)。查看大型 XML 文件可能需要較長時間。

幣圈十大交易平台排名:1. OKX,2. Binance,3. Gate.io,4. Coinbase,5. Kraken,6. Huobi,7. KuCoin,8. Crypto.com,9. Bitfinex,10. Gemini。選擇交易所時需考慮安全性、費用、幣種選擇、用戶體驗、客戶支持和監管,投資需謹慎。

在數字貨幣交易中,安全至關重要。 由於網絡釣魚盛行,找到歐易OKX官方入口地址和官方鏈接至關重要,錯誤鏈接可能導致賬戶被盜、資產損失和身份盜用。本文將提供安全訪問歐易OKX官方平台的全面指南,幫助用戶識別並避免釣魚網站,保護數字資產安全。 我們將介紹如何通過官方網站、官方應用、官方社交媒體賬號以及其他可信渠道確認歐易OKX官方入口,並提供重要的安全提示,例如避免不明鏈接、使用強密碼和啟用雙重驗證等,確保您的交易安全可靠。
