推薦(免費):redis入門教學
1、互聯網時代背景下大機遇,為何用NoSQL
1.1單機MySQL的美好年代
在90年代,一個網站的瀏覽量一般都不大,用單一資料庫完全可以輕鬆應付。
在那個時候,更多的都是靜態網頁,動態互動類型的網站不多。
DAL dal是資料存取層的英文縮寫,也就是為資料存取層(Data Access Layer)
上述架構下,我們來看看資料儲存的瓶頸是什麼?
1.資料量的總大小一個機器放不下時
2.資料的索引(B Tree)一個機器的內存放不下時
3.訪問量(讀寫混合)一個實例不能承受
如果滿足了上述1or3個,進化…
1.2.Memcached(快取) MySQL 垂直拆分
後來,隨著訪問量的上升,幾乎大部分使用MySQL架構的網站在資料庫上都開始出現了效能問題,web程式不再只專注在功能上,同時也在追求效能。 程式設計師開始大量的使用快取技術來緩解資料庫的壓力,優化資料庫的結構和索引。開始比較流行的是透過檔案快取來緩解資料庫壓力,但是當存取量繼續增大的時候,多台web機器透過檔案快取不能共享,大量的小檔案快取也帶了比較高的IO壓力。在這個時候,Memcached就自然的成為一個非常時尚的科技產品。
相當於之前dao層直接存取資料庫,現在中間插入了一個cache層。頻繁的資料庫存取造成了效能的降低,我們把其中的一些內容放入快取中,減輕壓力。
1.3.Mysql主從讀寫分離
由於資料庫的寫入壓力增加,Memcached 只能緩解資料庫的讀取壓力。讀寫集中在一個資料庫上讓資料庫不堪重負,大部分網站開始使用主從複製技術來達到讀寫分離,以提高讀寫效能和讀庫的可擴展性。 Mysql的master-slave模 式成為這個時候的網站標配了。
解釋:主庫有一筆記錄更新,為了確保資料的完整性,需要複製到從庫中。讀寫分離:Master/slaver。我們可以將寫的操作放在主庫中,讀的操作放在從庫中。
1.4.分錶分庫水平拆分mysql集群
在Memcached的高速緩存,MySQL的主從複製,讀寫分離的基礎之上,這時MySQL主庫的寫入壓力開始出現瓶頸,而資料量的持續激增,由於MyISAM使用表鎖,在高並發下會出現嚴重的鎖問題,大量的高並發MySQL應用程式開始使用InnoDB引擎取代MyISAM。
同時,開始流行使用分錶分庫來緩解寫入壓力和資料成長的擴展問題。這時候,分錶分庫成了一個熱門技術,是面試的熱門議題也是業界討論的熱門技術議題。也就在這個時候,MySQL推出了還不太穩定的表分區,這也為技術實力一般的公司帶來了希望。雖然MySQL推出了MySQL Cluster叢集,但效能也無法很好滿足網路的要求,只是在高可靠性上提供了非常大的保證。
表鎖定和行鎖定?
分庫分錶 1-3000進1號庫。 3001-6000進2號庫。等等
1.5.MySQL的擴展性瓶頸
MySQL資料庫也經常儲存一些大文本字段,導致資料庫表非常的大,在做資料庫恢復的時候就導致非常的慢,不容易快速恢復資料庫。例如1000萬4KB大小的文字就接近40GB的大小, 如果能把這些資料從MySQL省去,MySQL將變得非常小的。關係資料庫很強大,但是它並不能很好的應付所有的應用場景。 MySQL的擴展性差(需要複雜的技術來實現),大數據下IO壓力大,表結構更改困難,正是目前使用MySOL的開發人員面臨的問題。
1.6.今天是什麼樣子? ?
防火牆-nginx-Tomcat集群
1.7.為什麼用NoSQL
今天我們可以透過第三方平台( 如: Google,Facebook等) 可以輕鬆的存取和抓取資料。用戶的個人信息,社交網絡,地理位置,用戶生成的數據和用戶操作日誌已經成倍的增加。我們如果要對這些使用者資料進行挖掘,那麼SQL資料庫已經不適合這些應用了,NoSQL資料庫的發展卻能很好的處理這些大的資料。
2.是什麼
#NoSQL(NoSQL = Not Only SQL),意思是“不只是SQL”,泛指非關係型的資料庫。隨著網路web2.0網站的興起,傳統的關係資料庫在應付web2.0網站,特別是超大規模和高並發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,而非關係型的資料庫則由於其本身的特徵而得到了非常迅速的發展。 NoSQL 資料庫的產生就是為了解決大規模資料集多重資料種類所帶來的挑戰,尤其是大數據應用難題,包括超大規模資料的儲存。
(例如Google或Facebook每天為他們的用戶收集萬億位元的資料)。 這些類型的資料儲存不需要固定的模式,無需多餘操作就可以橫向擴展。
3.能幹嘛
易擴展
#NoSQL資料庫種類繁多,但是一個共同的特點都是去掉關係資料庫的關係型特性。數據之間無關係,這樣就非常容易擴展。也無形之間,在架構的層面上帶來了可擴展的能力。
大數據量高效能
NoSQL資料庫都具有非常高的讀寫效能,尤其在大數據量下,同樣表現優異。
這得益於它的無關聯性,資料庫的結構簡單。
一般MySQL使用Query Cache,每次表格的更新Cache就失效,是一種大粒度的Cache,在針對web2.0的互動頻繁的應用,Cache效能不高。
而NoSQL的Cache是記錄級的,是一種細粒度的Cache,所以NoSQL在這個層面上來說就要效能高很多了。
多樣化且靈活的資料模型
NoSQL無需事先為要儲存的資料建立字段,隨時可以儲存自訂的資料格式。
而在關聯式資料庫裡,增刪欄位是一件非常麻煩的事情。如果是非常大數據量的表,增加欄位簡直就是一場惡夢。
傳統RDBMS VS NOSQL
RDBMS
高度組織化結構化資料
結構化查詢語言(SQL)
資料和關聯都存儲在單獨的表中
資料操縱語言,資料定義語言
嚴格的一致性
基礎事務
NoSQL
代表著不只是SQL
沒有聲明性查詢語言
沒有預先定義的模式
鍵-值對存儲,列存儲,文檔存儲,圖形資料庫
最終一致性,而非ACID屬性
非結構化和不可預測的資料:
CAP定理
高效能,高可用性和可擴展性
4.有哪些NoSQL
Redis(資料型別和快取,各方面都比較優秀)
Memcached(高速緩存)
MongDB(最類似關係型資料庫)
5.怎麼玩
KV
Cache
Persistence
談談你對Redis的理解,就說KV-CACHE-PERSISITENCE
3V 3高
#大數據時代的3V:
海量Volume
多樣化Variety
實時Velocity
系統上出現一些問題的描述,淘寶雙十一海量的數據。一條微博,文字域,視訊域和背景域等等。多樣化。 12306實時性要求高。做不到絕對的即時
網路需求的3高:
高並發
高可括
高效能
系統要支援高並發,如12306.四種方式獲得線程。
可擴展性,橫向和縱向。橫向,一台機器不夠,再加機器。
效能要求高
更多相關學習敬請造訪redis欄位。 。
以上是redis學習之簡介NoSQL的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Redis的核心功能是高性能的內存數據存儲和處理系統。 1)高速數據訪問:Redis將數據存儲在內存中,提供微秒級別的讀寫速度。 2)豐富的數據結構:支持字符串、列表、集合等,適應多種應用場景。 3)持久化:通過RDB和AOF方式將數據持久化到磁盤。 4)發布訂閱:可用於消息隊列或實時通信系統。

Redis支持多種數據結構,具體包括:1.字符串(String),適合存儲單一值數據;2.列表(List),適用於隊列和棧;3.集合(Set),用於存儲不重複數據;4.有序集合(SortedSet),適用於排行榜和優先級隊列;5.哈希表(Hash),適合存儲對像或結構化數據。

Redis計數器是一種使用Redis鍵值對存儲來實現計數操作的機制,包含以下步驟:創建計數器鍵、增加計數、減少計數、重置計數和獲取計數。 Redis計數器的優勢包括速度快、高並發、持久性和簡單易用。它可用於用戶訪問計數、實時指標跟踪、遊戲分數和排名以及訂單處理計數等場景。

使用 Redis 命令行工具 (redis-cli) 可通過以下步驟管理和操作 Redis:連接到服務器,指定地址和端口。使用命令名稱和參數向服務器發送命令。使用 HELP 命令查看特定命令的幫助信息。使用 QUIT 命令退出命令行工具。

Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。

Redis 集群中使用 zset:zset 是一種有序集合,將元素與評分關聯。分片策略: a. 哈希分片:根據 zset 鍵的哈希值分佈。 b. 範圍分片:根據元素評分劃分為範圍,並將每個範圍分配給不同的節點。讀寫操作: a. 讀操作:如果 zset 鍵屬於當前節點的分片,則在本地處理;否則,路由到相應的分片。 b. 寫入操作:始終路由到持有 zset 鍵的分片。

如何清空 Redis 數據:使用 FLUSHALL 命令清除所有鍵值。使用 FLUSHDB 命令清除當前選定數據庫的鍵值。使用 SELECT 切換數據庫,再使用 FLUSHDB 清除多個數據庫。使用 DEL 命令刪除特定鍵。使用 redis-cli 工具清空數據。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

WebStorm Mac版
好用的JavaScript開發工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器