es與redis差異
ElasticSearch
課程推薦→:《elasticsearch全文搜尋實戰》(實戰影片)
相較於MongoDB和Redis,晚一年發布的ES可能知名度要低一些,但是ES在搜尋引擎領域的名聲絕對是響噹噹的。相較於其他高大上的資料庫產品,ES的出身要屌絲很多。
ES的創建者Shay Banon曾經是一個失業的屌絲程式設計師,在無事可做的時候為了方便老婆搜尋食譜而創建了ES(當然,當時還不叫ES)。不料無心插柳柳成蔭,成就了今天最熱門的搜尋引擎資料庫,果然妹子才是程式設計師工作的最大動力啊!
ES也特別成立了自己的Elastic公司已經獲得數億美金融資,當年的屌絲程式設計師Shay Banon也早已逆襲成為CEO並走上人生巔峰。各位程式設計師看官讀完這個故事是不是也已經開始內心澎湃的想像自己出任CEO迎娶白富美那一天了?
ES的特點,正如其名,那就是搜尋。嚴格的說,ES不是一個資料庫,而是一個搜尋引擎,ES的各個方面也都是圍繞著搜尋設計的。 ES支持全文搜索,這裡簡單解釋下什麼是全文搜索:對於“我在北京的一家互聯網公司工作”這樣的數據,如果你搜索“北京”、“互聯網”、“工作”這些關鍵字都能命中這資料的話,這就是全文搜索,你每天都在用的百度、Google都屬於全文搜尋。
值得一提的是,ES的全文搜尋對中文也有很好的支援(光是中文分詞器就有很多種),絕對能夠滿足國內大多數人的全文搜尋需求。除了搜尋之外,ES還會自動的替你對所有字段建立索引,以實現高性能的複雜聚合查詢,因此只要是存入ES的數據,無論再復雜的聚合查詢也可以獲得不錯的性能,而且你再也不用為如何建立各種複雜索引而頭痛了。
說了這麼多ES的優點,你是不是覺得ES簡直萬能了?
可惜不是的,ES也有很多的短處,最明顯的就是欄位類型無法修改、寫入效能較低和高硬體資源消耗。前邊講到ES會自動的替你建立索引,儘管這能給全文搜索以及聚合查詢帶來很多好處還能替你省了建索引這一麻煩事,但是這個特性也會帶來一堆問題。
ES需要在創建字段前要預先建立Mapping,Mapping中包含每個字段的類型信息,ES需要根據Mapping為字段建立合適的索引。由於這個Mapping的存在,ES中的字段一但建立就不能再修改類型了。
(例如,你建立的資料表的某個欄位忘了加全文搜索,你想暫時加上,但是表已經建好並且已經有很多資料了,這時候該怎麼辦呢?不好意思,你只能把整個資料表刪了再重建一遍!)
因此,ES在資料結構靈活度上高於MySQL但遠不如MongoDB。 ES的缺點還不只這些,自動建立索引使得ES的寫入效能也收到了影響,要明顯低於MongoDB。
對於同樣的資料ES佔用的儲存空間也要明顯大於MongoDB(建那麼多索引能不佔空間嗎?),對硬體資源的消耗也是非常厲害,大資料量下64G記憶體SSD基本是標配,算得上是資料庫中的貴族服務了,因此如果你的老闆很小氣,對於ES的選用可要慎重嘍!
ES的全文搜尋特性使它成為建立搜尋引擎的利器。除此之外,ES很好的支援了複雜聚合查詢這項特點也使得ES非常適合拿來做資料分析使用。
其實,ES還專門做了與自己配套的ELK套裝,給你提供從日誌收集到資料視覺化分析的一條龍服務,絕對是建構高大上資料分析平台的利器。
但是,ES的高成本和低寫入效能這些缺點也注定了它不適合用在那些資料價值不高、對寫入效能有要求、資料量大而成本受限的場景中。
Redis
Redis是現在最熱門的key-value資料庫。它與MongoDB同在2009年發布,也同樣是早期大數據時代的資料庫代表作。
Redis的最大特點當然就是key-value儲存所帶來的簡單和高效能了。所謂key-value存儲,就是每一筆記錄只包含一個用於查詢數據的Key,以及與之對應的存儲數據的value,就如同現實生活中的門牌號與住戶,而沒有諸如表、字段這些常規數據庫中必需有的複雜概念,所有的查詢都只依賴key值。
因此,key-value資料庫可謂是資料庫中資料結構最簡單的一種,也得益於這種簡單的結構,再加上Redis會把所有資料載入到記憶體中的,Redis能得到遠高於MongoDB這類常規資料庫的讀寫效能。當然,Redis的功能還不只key-value儲存這麼簡單,相較它的key-value前輩Memcached,Redis還支援資料持久化,list、set等多種資料結構,主從複製備份等一些列功能,因此Redis絕對稱得上是key-value資料庫中功能最全面、最簡單易用的款。
Redis的key-valule儲存帶來了效能這個優勢,但也為複雜查詢帶來了許多限制。由於閹割掉了資料表、欄位這樣的重要特性,且所有的查詢都依賴key,因此Redis無法提供常規資料庫所具備的多列查詢、區段查詢等複雜查詢功能。
同時,由於Redis需要把資料存在記憶體中,這也大大限制了Redis可儲存的資料量,這也決定了Redis難以用在資料規模很大的應用程式場景中。
Redis犧牲了常規資料庫中的資料表、複雜查詢等功能,換來了很大的效能提升,特別適合那些對讀寫效能要求極高,且資料表結構簡單(key-value 、list、set之類)、查詢條件也同樣簡單的應用場景。
如果你的資料表結構還蠻複雜,你還常常需要做一些複雜查詢操作,那你最好還是老實實用MongoDB或SQL吧。
更多Redis相關知識,請造訪Redis使用教學欄位!
以上是es和redis區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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 工具清空數據。

Redis數據過期策略有兩種:定期刪除:定期掃描刪除過期鍵,可通過 expired-time-cap-remove-count、expired-time-cap-remove-delay 參數設置。惰性刪除:僅在讀取或寫入鍵時檢查刪除過期鍵,可通過 lazyfree-lazy-eviction、lazyfree-lazy-expire、lazyfree-lazy-user-del 參數設置。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!