以前講過Redis的介紹,及使用Redis帶來的優點,這章整理了一下Redis的應用場景,也是很是重要的,學不學得好,能正常落地是關鍵。面試
下面一一來分析下Redis的應用場景都有哪些。數據庫
緩存如今幾乎是全部中大型網站都在用的必殺技,合理的利用緩存不只可以提高網站訪問速度,還能大大下降數據庫的壓力。Redis提供了鍵過時功能,也提供了靈活的鍵淘汰策略,因此,如今Redis用在緩存的場合很是多。緩存
不少網站都有排行榜應用的,如京東的月度銷量榜單、商品按時間的上新排行榜等。Redis提供的有序集合數據類構能實現各類複雜的排行榜應用。網絡
什麼是計數器,如電商網站商品的瀏覽量、視頻網站視頻的播放數等。爲了保證數據實時效,每次瀏覽都得給+1,併發量高時若是每次都請求數據庫操做無疑是種挑戰和壓力。Redis提供的incr命令來實現計數器功能,內存操做,性能很是好,很是適用於這些計數場景。session
集羣模式下,在應用很少的狀況下通常使用容器自帶的session複製功能就能知足,當應用增多相對複雜的系統中,通常都會搭建以Redis等內存數據庫爲中心的session服務,session再也不由容器管理,而是由session服務及內存數據庫管理。數據結構
在不少互聯網公司中都使用了分佈式技術,分佈式技術帶來的技術挑戰是對同一個資源的併發訪問,如全局ID、減庫存、秒殺等場景,併發量不大的場景可使用數據庫的悲觀鎖、樂觀鎖來實現,但在併發量高的場合中,利用數據庫鎖來控制資源的併發訪問是不太理想的,大大影響了數據庫的性能。能夠利用Redis的setnx功能來編寫分佈式的鎖,若是設置返回1說明獲取鎖成功,不然獲取鎖失敗,實際應用中要考慮的細節要更多。併發
點贊、踩、關注/被關注、共同好友等是社交網站的基本功能,社交網站的訪問量一般來講比較大,並且傳統的關係數據庫類型不適合存儲這種類型的數據,Redis提供的哈希、集合等數據結構能很方便的的實現這些功能。異步
Redis列表結構,LPUSH能夠在列表頭部插入一個內容ID做爲關鍵字,LTRIM可用來限制列表的數量,這樣列表永遠爲N個ID,無需查詢最新的列表,直接根據ID去到對應的內容頁便可。分佈式
消息隊列是大型網站必用中間件,如ActiveMQ、RabbitMQ、Kafka等流行的消息隊列中間件,主要用於業務解耦、流量削峯及異步處理實時性低的業務。Redis提供了發佈/訂閱及阻塞隊列功能,能實現一個簡單的消息隊列系統。另外,這個不能和專業的消息中間件相比。性能
@程序猿 大家還知作別的應用嗎?歡迎留言!
關注下面的公衆號,回覆 「答案」 獲取50道Redis面試題及答案。