2.4 總結
3. redis的特點
4. redis的應用場景
5. redis總結
redis是乙個開源的、遵守bsd協議、支援網路、可基於記憶體亦可持久化的日誌型、高效能(nosql)key-value資料庫。
nosql資料庫的產生就是為了解決大規模資料集合多重資料種類帶來的挑戰,尤其是大資料應用難題。
鍵值(key-value)儲存資料庫
key-value使用到乙個雜湊表,這個表中有乙個特定的鍵和乙個指標指向特定的資料。
典型應用:內容快取,主要用於處理大量資料的高訪問負載
資料模型:鍵值對
優勢:快速查詢
劣勢:儲存的資料缺少結構化
列儲存資料庫
列儲存資料庫通常是用來應對分布式儲存的海量資料。鍵依然存在,但是它們的特點是指向了多個列。
典型應用:分布式的檔案系統
資料模型:以列簇式儲存,將同一列資料存在一起
優勢:查詢速度快,可擴充套件性強,更容易進行分布式擴充套件
劣勢:功能相對侷限
文件型資料庫
典型應用:web應用(與key-value類似,value是結構化的)
資料模型:鍵值對
優勢:資料結構要求不嚴格
劣勢:查詢效能不高,而且缺乏統一的查詢語法
圖形(graph)資料庫
典型應用:社交網路
資料模型:圖結構
劣勢:需要對整個圖做計算才能得出結果,不容易做分布式的集群方案
資料模型比較簡單
需要靈活性更強的it系統
對資料庫效能要求較高
不需要高度的資料一致性
對於給定key,比較容易對映複雜值的環境
可以用作資料庫、快取、熱點資料(經常會被查詢,但是不經常被修改或者刪除的資料)和訊息中介軟體等大部分功能。
redis常用的場景示例如下:
快取快取幾乎是所有中大型**都在用的必殺技,合理的利用快取不僅能提公升**的訪問速度,還能打打降低資料庫的壓力。redis提供了鍵過期功能,也提供了靈活的鍵淘汰策略。
排行榜很多**都有排行榜應用的,如京東的月度銷量榜單、商品按時間的上新排行榜等。redis提供的有序集合資料類能實現複雜的排行榜應用。
計數器分布式會話
集群模式下,在應用不多的情況下一般使用容器自帶的session複製功能就能滿足,當應用增多相對複雜的系統中,一般都會搭建以redis等記憶體資料庫為中心的session服務,session不再由容器管理,而是由session服務及記憶體資料庫管理。
分布式鎖
在很多網際網路公司中都使用了分布式技術,分布式技術帶來的技術挑戰是對同一資源的併發訪問,如全域性id、減庫存、秒殺等場景,併發量不大的場景可以使用資料庫的悲觀鎖、樂觀鎖來實現,但是在併發量高的場合中,利用資料庫鎖來控制資源的併發訪問是不理想的,大大影響了資料庫的效能。可以使用redis的setnx功能來編寫分布式的鎖,通過設定返回1說明獲取鎖成功,否則獲取鎖失敗。
社交網路
點讚、踩、關注/被關注、共同好友等是社交**的基本功能,社交**的訪問量通常來說比較大,而且傳統的關聯式資料庫型別不適合儲存這種型別的資料,redis提供的雜湊、集合等資料結構就能很方便的實現這些功能。
最新列表
redis列表結構,lpush可以在列表頭部插入乙個內容,使用id作為關鍵字,ltrim可以用來限制列表的數量,這樣列表永遠為n個id,無需查詢最新的列表,直接根據id去找到對應的內容也即可。
訊息系統
Redis系列學習筆記3 雜湊
儲存多個域值對。乙個雜湊由多個域值對 field value pair 組成,雜湊的域和值都可以是文字 整數 浮點數或者二進位制資料。同乙個雜湊裡面的每個域必須是獨一無 二 各不相同的,而域的值則沒有這一要求,換句話說,不同域的值可以是重複的。通過命令,使用者可以對雜湊執行設定域值對 獲取域的值 檢...
Redis系列學習筆記2 Redis字串
設定值 set key value nx xx nx xx 為可選。nx 僅在鍵key不存在的情況下,才進行設定操作,如果鍵存在,那麼將不做任何動作。xx 僅在鍵key已經存在的情況下,才進行設定操作,如果鍵key不存在,那麼不做任何動作set key value nx和setnx key valu...
Redis系列學習筆記4 列表
以有序的方式儲存多個可重複的值 lpush key value value 將乙個或以上數量的值依次推入到列表的左端,命令返回新值被推入之後,列表目前包含的項數量。rpush key value value 將乙個或以上數量的值依次推入到列表的右端,命令返回新值被推入之後,列表目前包含的項數量。lp...