redis用在什麼地方?
redis應用程式場景
●令牌(Token)產生
● 簡訊驗證碼
● 排行榜
● 訊息佇列
Redis 中list的資料結構實作是雙向鍊錶,所以可以非常方便的應用於訊息佇列(生產者/ 消費者模式)。訊息的生產者只需要透過lpush將訊息放入 list,消費者便可以透過rpop取出該訊息,並且可以保證訊息的有序性。如果需要實作帶有優先權的訊息佇列也可以選擇sorted set。而pub/sub功能也可以用作發布者 / 訂閱者模型的訊息。無論使用何種方式,由於 Redis 擁有持久化功能,也不需要擔心伺服器故障導致訊息遺失的情況。 (推薦:《Redis影片教學》)
如果對於資料一致性要求高的話還是用RocketMQ等專業系統。
由於redis把資料加入佇列是傳回新增元素在佇列的第幾位,所以可以做判斷使用者是第幾個存取這種業務
佇列不僅可以把並發請求變成串行,也可以做佇列或堆疊使用
分散式鎖定
#驗證前端的重複請求,可以透過redis進行過濾
#秒殺系統,基於redis是單執行緒特徵,防止出現資料庫「爆破」
全域增量ID生成,類似「秒殺」
計數器
諸如統計點擊數等應用程式。由於單線程,可以避免並發問題,保證不會出錯,而且100%毫秒級效能!
計數功能應該是最適合 Redis 的使用場景之一了,因為它高頻率讀寫的特徵可以完全發揮 Redis 作為記憶體資料庫的高效能。在 Redis 的資料結構中,string、hash和sorted set都提供了incr方法用於原子性的自增操作。
範例:
如果應用程式需要顯示每天的註冊用戶數,便可以使用string作為計數器,設定一個名為REGISTERED_COUNT_TODAY的key,並在初始化時給它設定一個到凌晨0 點的過期時間,每當用戶註冊成功後便使用incr命令使該key 增長1,同時當每天凌晨0 點後,這個計數器都會因為key 過期使值清零。
每個微博都有點讚數、評論數、轉發數和瀏覽數四條屬性,這時用hash進行計數會更好,將該計數器的key 設為weibo:weibo_id,hash的field 為like_number、comment_number、forward_number和view_number,對應作業後透過hincrby使hash 中的field 自增。
如果套用有一個發文排行榜的功能,便選擇sorted set吧,將集合的 key 設為POST_RANK。當用戶發佈後,使用zincrby將該用戶 id 的 score 成長 1。 sorted set會重新進行排序,使用者所在排行榜的位置也會得到即時的更新。
以上是redis用在什麼地方的詳細內容。更多資訊請關注PHP中文網其他相關文章!