1. 程式人生 > >Atitit redis使用場合總結 使用場景 目錄 1.1. 3. Session 儲存 1 1、 配置資料查詢 1 2. 排行榜應用,取TOP N操作 1 1.2. 1、查詢最

Atitit redis使用場合總結 使用場景 目錄 1.1. 3. Session 儲存 1 1、 配置資料查詢 1 2. 排行榜應用,取TOP N操作 1 1.2. 1、查詢最

Atitit redis使用場合總結 使用場景   

 

 

 

目錄

1.1. 3. Session 儲存 1

1、 配置資料查詢 1

2. 排行榜應用,取TOP N操作 1

1.2.     1、查詢最新的回覆。 2

1.3.     2、排行問題 2

1.4.    3、刪除過期資料 2

2. 通用場景 2

2、 快取2、排行榜3、計數器4、分散式會話5、 3

3、 分散式鎖6、 社交網路7、最新列表8、訊息系統 3

4、 會話管理 3

5、 熱點資料查詢 3

5. 實時系統,反垃圾系統 3

2.1. .Pub/Sub構建實時訊息系統 3

8. 構建佇列系統 4

2.2. 快取1. 全頁面快取 12. 排行榜 1 4

2.3. 3. Session 儲存 14. 佇列 25. 釋出/訂閱 2 4

3. ref 5

 

 

    1. 3. Session 儲存

這可能是應用最廣的點了,相比較於類似 memcache 的 session 儲存,Redis 具有快取資料持久化的能力,當快取因出現問題而重啟後,之前的快取資料還在那兒,這個就比較實用,避免了因為session突然消失帶來的使用者體驗問題。

  1. 配置資料查詢
  1. 排行榜應用,取TOP N操作

  2. 這個需求與上面需求的不同之處在於,前面操作以時間為權重,這個是以某個條件為權重,比如按頂的次數排序,這時候就需要我們的sorted set出馬了,將你要排序的值設定成sorted set的score,將具體的資料設定成相應的value,每次只需要執行一條ZADD命令即可。
    3.需要精準設定過期時間的應用
    1.     1、查詢最新的回覆。

 

         如果在傳統的關係型資料庫,這就需要使用select * from table where name="" order by time desc limit  100;這十分消耗資料庫效能,但是通過Redis,就可以直接在Redis裡面通過Id建立一個List,指定長度1w,當需要查詢時,直接輸出該list的後100條記錄。

 

    1.     2、排行問題

 

       常見的排行問題,例如最熱話題、遊戲排名等等,這些都可以通過Redis來輕鬆實現,直接使用ZRank即可得到。

 

    1.    3、刪除過期資料

 

      Redis不是真正意義上的可持久化資料庫,可以給資料加上一個有效時間,在有效時間超過時,Redis會自動刪除對應資料。

來分析下Redis的應用場景都有哪些。

 

 

 

  1. 通用場景

 

  1. 快取2、排行榜3、計數器4、分散式會話5、
  2. 分散式鎖6、 社交網路7、最新列表8、訊息系統
  3. 會話管理   
  4. 熱點資料查詢
  1. 4.計數器應用
    Redis的命令都是原子性的,你可以輕鬆地利用INCR,DECR命令來構建計數器系統。
    5.Uniq操作,獲取某段時間所有資料排重值
    這個使用Redis的set資料結構最合適了,只需要不斷地將資料往set中扔就行了,set意為集合,所以會自動排重。
    6.
  2. 實時系統,反垃圾系統

  3. 通過上面說到的set功能,你可以知道一個終端使用者是否進行了某個操作,可以找到其操作的集合並進行分析統計對比等。沒有做不到,只有想不到。
    7
    1. .Pub/Sub構建實時訊息系統

  4. Redis的Pub/Sub系統可以構建實時的訊息系統,比如很多用Pub/Sub構建的實時聊天系統的例子。
    8.
  5. 構建佇列系統

  6. 使用list可以構建佇列系統,使用sorted set甚至可以構建有優先順序的佇列系統。
    9.
    1. 快取1. 全頁面快取 12. 排行榜 1
    2. 3. Session 儲存 14. 佇列 25. 釋出/訂閱 2
  7.  

  8. 這個不必說了,效能優於Memcached,資料結構更多樣化

 

1、快取2、排行榜3、計數器4、分散式會話5、分散式鎖6、 社交網路7、最新列表8、訊息系統

 

快取現在幾乎是所有中大型網站都在用的必殺技,合理的利用快取不僅能夠提升網站訪問速度,還能大大降低資料庫的壓力。Redis提供了鍵過期功能,也提供了靈活的鍵淘汰策略,所以,現在Redis用在快取的場合非常多。

 

2、排行榜3、計數器4、分散式會話5、分散式鎖6、 社交網路7、最新列表8、訊息系統

 

很多網站都有排行榜應用的,如京東的月度銷量榜單、商品按時間的上新排行榜等。Redis提供的有序集合資料類構能實現各種複雜的排行榜應用。

 

3、計數器4、分散式會話5、分散式鎖6、 社交網路7、最新列表8、訊息系統

 

什麼是計數器,如電商網站商品的瀏覽量、視訊網站視訊的播放數等。為了保證資料實時效,每次瀏覽都得給+1,併發量高時如果每次都請求資料庫操作無疑是種挑戰和壓力。Redis提供的incr命令來實現計數器功能,記憶體操作,效能非常好,非常適用於這些計數場景。

 

4、分散式會話5、分散式鎖6、 社交網路7、最新列表8、訊息系統

 

叢集模式下,在應用不多的情況下一般使用容器自帶的session複製功能就能滿足,當應用增多相對複雜的系統中,一般都會搭建以Redis等記憶體資料庫為中心的session服務,session不再由容器管理,而是由session服務及記憶體資料庫管理。

 

5、分散式鎖6、 社交網路7、最新列表8、訊息系統

 

在很多網際網路公司中都使用了分散式技術,分散式技術帶來的技術挑戰是對同一個資源的併發訪問,如全域性ID、減庫存、秒殺等場景,併發量不大的場景可以使用資料庫的悲觀鎖、樂觀鎖來實現,但在併發量高的場合中,利用資料庫鎖來控制資源的併發訪問是不太理想的,大大影響了資料庫的效能。可以利用Redis的setnx功能來編寫分散式的鎖,如果設定返回1說明獲取鎖成功,否則獲取鎖失敗,實際應用中要考慮的細節要更多。

 

6、 社交網路7、最新列表8、訊息系統

 

點贊、踩、關注/被關注、共同好友等是社交網站的基本功能,社交網站的訪問量通常來說比較大,而且傳統的關係資料庫型別不適合儲存這種型別的資料,Redis提供的雜湊、集合等資料結構能很方便的的實現這些功能。

 

7、最新列表8、訊息系統

 

Redis列表結構,LPUSH可以在列表頭部插入一個內容ID作為關鍵字,LTRIM可用來限制列表的數量,這樣列表永遠為N個ID,無需查詢最新的列表,直接根據ID去到對應的內容頁即可。

 

8、訊息系統

訊息佇列是大型網站必用中介軟體,如ActiveMQ、RabbitMQ、Kafka等流行的訊息佇列中介軟體,主要用於業務解耦、流量削峰及非同步處理實時性低的業務。Redis提供了釋出/訂閱及阻塞佇列功能,能實現一個簡單的訊息佇列系統。另外,這個不能和專業的訊息中介軟體相比。

---------------------

 

  1.  ref

 

Redis資料結構使用場景

Redis使用場景詳解 - 九北魚 - CSDN部落格.html

Redis 的 8 大應用場景! - Java技術棧 - CSDN部落格.html

Redis 的 5 個常見應用場景 - yunzhaji3762的部落格 - CSDN部落格.html