redis中存儲的數據格式為鍵值對(Key,Value)
在高并發的項目和微服務的項目會頻繁的用到redis
NoSQL型數據庫
1.初始Redis
1.1認識NoSQL
SQL:structure query language關系型數據庫
結構化:有固定格式要求(表關系,約束關系等),不建議后續的隨意修改
關聯的:有關聯(外鍵),表關系易于維護,較為方便
SQL查詢:查詢語法固定,是一種通用語法
ACID
存儲方式:在磁盤存儲
擴展性:垂直(本機)
適用:數據結構相對固定、相關業務對數據安全性一致性要求較高
NoSQL:非關系型數據庫
非結構化:健值型、文檔型(json)、圖類型、列類型等,允許后續的結構修改
非關聯的:一般通過json數據去維護關系,比較復雜需要程序員自己去維護
非SQL:不同的非關系庫中的語法不相同,語法較為簡單
無法全部滿足ACID
存儲方式:在內存中存儲
擴展性:水平(分布式多機)
適用:數據結構不固定、相關業務對數據安全性一致性要求較低,對性能的要求較高
1.2認識Redis
redis 誕生于2009年,Remote Dictionary Server 遠程詞典服務器,是一個基于內存的健值型NoSQL數據庫
特征:
健值型,value支持多種不同數據結構(集合,字符串,map等),功能豐富
單線程,每個命令具有原子性,線程安全
低延遲,速度快(基于內存、IO多路復用、良好的編碼C、底層實現了良好的數據結構)
?技術本質?
????????IO多路復用(I/O Multiplexing)是一種同步IO模型,通過單個線程或進程同時監視多個文件描述符(如套接字),當其中任意一個描述符就緒(可讀/可寫)時,內核會通知應用程序進行相應操作。其核心思想是?“事件驅動”?和?“資源復用”?。
?關鍵特征?
?單線程管理多連接?:與傳統的“一線程一連接”模式不同,它通過Selector(選擇器)或epoll等機制實現線程復用。
?同步非阻塞?:屬于同步IO范疇,但通過非阻塞方式輪詢或事件通知實現高效處理。
解決的核心問題
?高并發場景的資源消耗?:傳統阻塞IO(如BIO)需為每個連接創建獨立線程,導致線程切換開銷大、內存占用高,而IO多路復用通過單線程處理數千連接,顯著降低系統開銷。
支持數據持久化
支持主從集群、分片集群
支持多語言客戶端
1.3安裝redis
見下篇筆記