Redis 應用場景


前言

這篇主要是記錄一下之前看到的一個公開課視頻內容,大體講解的是Redis各種數據結構的應用場景;

如視頻所說,一些中小型公司使用Redis的應用場景比較單一, 使用的數據結構大部分是string,或者是hash, 其他數據結構基本使用的很少,  至少我呆過的公司目前是這樣的,尷尬!!!

數據結構

Redis中基本的五種數據結構,分別是字符串string、哈希hash、列表list、集合set、有序集合zset,各種數據結構基本使用請參考http://redisdoc.com/,這里就主要記錄應用場景,數據存放結構如下圖:

 

 

String 結構--具體命令使用參考http://redisdoc.com/string/

 

String應用場景

 

 

 

Session共享,根據編程環境提供的對應的RedisSession庫可以實現Session共享,這里應該都使用過;

對象緩存,相信很多小伙伴和我一樣,也是用Json字符串或者Hash存儲, 其實這里說的用MSET和MGET也是一個不錯的選擇;

分布式鎖,主要利用SETNX命令限制,SETNX 是『SET if Not eXists』(如果不存在,則 SET)的簡寫,但光用這個遠遠不夠,還需要考慮業務其他相關場景;

計數器,主要用作文章的瀏覽次數,頁面訪問量等;

 

Hash數據結構 具體命令使用參考http://redisdoc.com/hash/index.html

 

Hash應用場景

做對象緩存

 

 電商購物車

 

 每個人的購物車,以用戶id為key,商品id為field,商品數量為value,其他信息可以通過商品id到數據庫中獲取詳細信息,前端異步調用接口即可。

Hash優缺點:

 

 

 

 

List 數據結構 --具體命令使用參考http://redisdoc.com/list/index.html

 

 List應用場景

 

 通過命令組合,和模擬實現常用數據結構,棧、隊列、阻塞隊列

 

實現模擬

 

 消息流,關注多個人,消息時間不一樣,后台會根據發送消息時間順序,定時給每個關注用戶一條一條發信息,而不是一下發送。

 

Set數據結構--具體命令參考http://redisdoc.com/set/index.html

 

 Set應用場景

抽獎活動ID為LuckyDraw,點擊參與抽獎的時候,將對應用戶加到抽獎集合中,通過SMEMBERS 抽獎活動ID 獲取參與人數,通過SRANDMEMBER 抽獎活動ID或SPOP 抽獎活動ID 進行抽獎。  這樣的設計真的比用程序方便多,之前做過一個抽獎程序,用代碼和數據庫實現,做的東西挺多的。

 

 

 

 

 

 

 

 

 

 

 

 

這里是把所有維度的內容都預先加載到集合中,然后通過集合運算進行過濾,這里只是一種思路,真正這樣做的話其實得考慮可行性。

 

 

 

有序集合zset數據結構--具體命令請參考http://redisdoc.com/sorted_set/index.html

 

 有序集合zset的使用場景

 

 

總結

 

 Redis基本的數據結構應用場景先記錄那么多,以上記錄的使用場景,我覺得給大家提供的是一種思路,希望大家不要局限於這些,大家根據自己的業務使用吧!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM