為什么說(shuō)Redis是單線(xiàn)程的以及Redis為什么這么快?
發(fā)布日期:
2019-01-01


一、前言

近乎所有與Java相關(guān)的面試都會(huì )問(wèn)到緩存的問(wèn)題,基礎一點(diǎn)的會(huì )問(wèn)到什么是“二八定律”、什么是“熱數據和冷數據”,復雜一點(diǎn)的會(huì )問(wèn)到緩存雪崩、緩存穿透、緩存預熱、緩存更新、緩存降級等問(wèn)題,這些看似不常見(jiàn)的概念,都與我們的緩存服務(wù)器相關(guān),一般常用的緩存服務(wù)器有Redis、Memcached等,而筆者目前最常用的也只有Redis這一種。

如果你在以前面試的時(shí)候還沒(méi)有遇到過(guò)面試官問(wèn)你《為什么說(shuō)Redis是單線(xiàn)程的以及Redis為什么這么快!》,那么你看到這篇文章的時(shí)候,你應該覺(jué)得是一件很幸運的事情!如果你剛好是一位高逼格的面試官,你也可以拿這道題去面試對面“望穿秋水”般的小伙伴,測試一下他的掌握程度。

好啦!步入正題!我們先探討一下Redis是什么,Redis為什么這么快、然后在探討一下為什么Redis是單線(xiàn)程的?


二、Redis簡(jiǎn)介

Redis是一個(gè)開(kāi)源的內存中的數據結構存儲系統,它可以用作:數據庫、緩存和消息中間件。

它支持多種類(lèi)型的數據結構,如字符串(String),散列(Hash),列表(List),集合(Set),有序集合(Sorted Set或者是ZSet)與范圍查詢(xún),Bitmaps,Hyperloglogs 和地理空間(Geospatial)索引半徑查詢(xún)。其中常見(jiàn)的數據結構類(lèi)型有:String、List、Set、Hash、ZSet這5種。

Redis 內置了復制(Replication),LUA腳本(Lua scripting), LRU驅動(dòng)事件(LRU eviction),事務(wù)(Transactions) 和不同級別的磁盤(pán)持久化(Persistence),并通過(guò) Redis哨兵(Sentinel www.xucaizxyl.com)和自動(dòng)分區(Cluster)提供高可用性(High Availability)。

Redis也提供了持久化的選項,這些選項可以讓用戶(hù)將自己的數據保存到磁盤(pán)上面進(jìn)行存儲。根據實(shí)際情況,可以每隔一定時(shí)間將數據集導出到磁盤(pán)(快照),或者追加到命令日志中(AOF只追加文件),他會(huì )在執行寫(xiě)命令時(shí),將被執行的寫(xiě)命令復制到硬盤(pán)里面。您也可以關(guān)閉持久化功能,將Redis作為一個(gè)高效的網(wǎng)絡(luò )的緩存數據功能使用。

Redis不使用表,他的數據庫不會(huì )預定義或者強制去要求用戶(hù)對Redis存儲的不同數據進(jìn)行關(guān)聯(lián)。
??????數據庫的工作模式按存儲方式可分為:硬盤(pán)數據庫和內存數據庫。Redis 將數據儲存在內存里面,讀寫(xiě)數據的時(shí)候都不會(huì )受到硬盤(pán) I/O 速度的限制,所以速度極快。

(1)硬盤(pán)數據庫的工作模式:

這里寫(xiě)圖片描述

(2)內存數據庫的工作模式:

這里寫(xiě)圖片描述

看完上述的描述,對于一些常見(jiàn)的Redis相關(guān)的面試題,是否有所認識了,例如:什么是Redis、Redis常見(jiàn)的數據結構類(lèi)型有哪些、Redis是如何進(jìn)行持久化的等。

相關(guān)推薦

【DTCC2019】數據風(fēng)云,十年變遷 - 第十屆中國數據庫技術(shù)大會(huì )隆重啟動(dòng)
作為國內備受關(guān)注的數據庫及大數據領(lǐng)域技術(shù)盛會(huì ),第十屆中國數據...
董明珠談小米做空調:質(zhì)量和技術(shù)比他們好,沒(méi)壓力
董明珠稱(chēng),格力啟動(dòng)九萬(wàn)員工開(kāi)網(wǎng)店的模式后,格力業(yè)績(jì)當月賣(mài)了2...
近20年數據被黑客全部清空 美國電郵商 VFEmail宣布倒閉
數據,對于企業(yè)來(lái)講是至關(guān)重要的,如果企業(yè)的數據庫被黑客攻陷,...
半年墜毀兩架,波音737MAX-8你還敢坐嗎?
當地時(shí)間3月10日上午,埃塞俄比亞航空公司的一架載有149名...