一、需求切入點 在公司做的一個系統業務需要有個定時提醒的功能(數據在mysql中),要求提醒的時間差精准到分鍾 解決方案有: 使用定時器,每分鍾執行一次,查符合提醒的數據,發起提醒(數據庫連接與系統的負載都承受不住的!!) 將待提醒數據提前查出存進redis中,根據提醒時間設置 ...
話不多說,直接上需求描述: 最近需要上一期活動,這個活動是以轉盤抽獎為形式的抽獎活動,要求每個用戶用積分進行抽獎,且中獎率為 即不可出現不中任何獎品的情況,之后,又加了一個要求,即不能實行純隨機的抽取,如果如此會產生一個極端情況,如果開始的時候活動極其火爆由於隨機的不可控性頭一天用戶便將所有優質獎品全部抽走,那么后來的用戶將只會抽到保底獎品。 那么獎品就需要按時間分布在從活動開始到結束的時間段,其 ...
2018-12-16 23:36 0 2205 推薦指數:
一、需求切入點 在公司做的一個系統業務需要有個定時提醒的功能(數據在mysql中),要求提醒的時間差精准到分鍾 解決方案有: 使用定時器,每分鍾執行一次,查符合提醒的數據,發起提醒(數據庫連接與系統的負載都承受不住的!!) 將待提醒數據提前查出存進redis中,根據提醒時間設置 ...
跳表: ...
限流 需求背景:同一用戶1分鍾內登錄失敗次數超過3次,頁面添加驗證碼登錄驗證,也即是限流的思想。 常見的限流算法:固定窗口計數器;滑動窗口計數器;漏桶;令牌桶。本篇選擇的滑動窗口計數器 redis zset特性 Redis 有序集合(sorted set)和集合(set)一樣也是 ...
一、需求 移動端系統里有用戶和文章,文章可設置權限對部分用戶開放。現要實現的功能是,用戶瀏覽自己能看的最新文章,並可以上滑分頁查看。 二、數據庫表設計 涉及到的數據庫表有:用戶表TbUser、文章表TbArticle、用戶可見文章表TbUserArticle ...
延遲隊列就是個帶延遲功能的消息隊列,相對於普通隊列,它可以在指定時間消費掉消息。 延遲隊列的應用場景: 1、新用戶注冊,10分鍾后發送郵件或站內信。 2、用戶下單后,30分鍾未支付,訂單自動作廢。 我們通過redis的有序集合zset來實現簡單的延遲隊列,將消息數據序列化 ...
一.Zset編碼的選擇 1.有序集合對象的編碼可以是ziplist或者skiplist。同時滿足以下條件時使用ziplist編碼: 元素數量小於128個 所有member的長度都小於64字節 其他: 不能滿足上面兩個條件的使用 skiplist ...
using ServiceStack.Redis;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace ...
有一個場景,商品A預售量1000件,早上10點准時開搶,10W個人一起來搶,在正式開始之后,我們將面對兩個問題1 大批的數據庫請求和大量的訂單創建,數據庫壓力巨大,有可能宕機2 商品可能出現超賣的情況解決方案如下: 這里我們先看商品超賣的問題最原始的下單流程無非就是: 判斷商品庫存是否 ...