為什么說Redis是單線程的以及Redis為什么這么快?
發布日期:
2019-01-01


一、前言

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

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

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


二、Redis簡介

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

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

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

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

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

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

這里寫圖片描述

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

這里寫圖片描述

看完上述的描述,對于一些常見的Redis相關的面試題,是否有所認識了,例如:什么是Redis、Redis常見的數據結構類型有哪些、Redis是如何進行持久化的等。

相關推薦

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