首頁 > 資料庫 > Redis > 主體

redis 筆記記錄-概述

發布: 2023-08-08 16:24:05
轉載
1228 人瀏覽過

redis介紹

Redis是一個開源(BSD授權),記憶體儲存的資料結構伺服器,可用作資料庫,快取和訊息佇列代理。它支援字串#雜湊表列表#、有序集合#,位圖hyperloglogs等資料類型。內建複製、Lua腳本、LRU收回、##交易以及不同層級磁碟持久化功能,同時透過Redis Sentinel提供高可用,透過Redis Cluster提供自動分區

Redis到底有多快

Redis採用的是基於記憶體的採用的是單一進程單線程模型的KV 資料庫#,由C語言編寫 ,官方提供的資料是可以達到100000 的QPS(每秒內查詢次數)。

redis 筆記記錄-概述

橫軸是連接數,縱軸是QPS

我們看著官方給出的數據,發現是真的快;作為一個有夢想的程式設計師,必須得知道它為啥那麼快,你說對不對!

那麼我在網頁上查閱過一些資料,大致的情況如下:

  • 完全基於內存,絕大部分請求是純粹的記憶體操作,非常快速。資料存在記憶體中,類似HashMap,HashMap的優勢就是查找和操作的時間複雜度都是O(1);

  • ##資料結構簡單,對資料操作也簡單,Redis中的資料結構是專門進行設計的;

  • 採用單線程,避免了不必要的上下文切換和競爭條件,也不存在多進程或多執行緒導致的切換而消耗CPU,不用去考慮各種鎖的問題,不存在加鎖釋放鎖操作,沒有因為可能出現死鎖而導致的效能消耗;

  • #使用多路I/O復用模型,非阻塞IO;

  • 使用底層模型不同,它們之間底層實作方式以及與客戶端之間通訊的應用協定不一樣,Redis直接自己建構了VM 機制,因為一般的系統呼叫系統函數的話,會浪費一定的時間去移動和請求;

多路I/O復用模型是利用select、poll、epoll 可以同時監察多個流的I/O 事件的能力,在空閒的時候,會把當前線程阻塞掉,當有一個或多個流有I/O 事件時,就從阻塞態中喚醒,於是程式就會輪詢一遍所有的流(epoll 是只輪詢那些真正發出了事件的流),並且只依序順序的處理就緒的流,這種做法就避免了大量的無用操作。

總結起來其實有三個點:

  1. #使用 epoll 網路模型,採用單執行緒處理請求。

  2. 使用符合需求的各種高效能資料結構。

  3. redis 使用記憶體操作;並使用C語言編寫。

出發點

#本系列的文章不重點討論epoll 網路模型,主要記錄學習redis資料結構的原理。讓我們知道 redis 為什麼資料處理得非常快。

  1. redis 的string 實作原則

  2. redis 的list  實作原則

  3. redis 的set 實作原則

  4. redis 的sorted set 實作原則

  5. #redis 的hash 實作原理

  6. #其他資料類型的介紹

以上是redis 筆記記錄-概述的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:Golang菜鸟
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!