在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

有關(guān)Redis的一些思考和理解

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-10-30 11:21 ? 次閱讀

本篇文章不是一篇具體的教程,筆者打算記錄一下自己對 Redis 的一些思考。說來慚愧,筆者剛接觸 Redis 的時候只是簡單地使用了一下,背了一些面試題,就在簡歷上寫下了 Redis 這個技能點。

我們能在網(wǎng)絡(luò)上輕易地找到關(guān)于 Redis 具體知識點的講解,但很少有文字說明為什么會有這項技術(shù),筆者希望通過本文總結(jié)一下個人目前對 Redis 的理解。

1. 初識 Redis

最開始的時候,筆者是通過網(wǎng)絡(luò)上面的一些項目教程了解到 Redis 的,當(dāng)時教程里說把首頁數(shù)據(jù)放到 Redis 里,能夠加快首頁數(shù)據(jù)的訪問速度,于筆者我就照做了。代碼跑起來后,發(fā)現(xiàn)好像確實加載得蠻快的,就當(dāng)完成了。

項目做完后,寫到了簡歷里,順便在技能里寫上熟練使用 Redis,再背了幾道關(guān)于 Redis 的數(shù)據(jù)類型,持久化機制的面試題,便去找實習(xí)了。

當(dāng)時面試的時候面試官問筆者:你為什么使用 Redis 呀?

筆者按照項目教程里說的復(fù)述了一遍:因為能讓首頁更快地加載數(shù)據(jù),咱們的產(chǎn)品首頁是很重要,越快加載出數(shù)據(jù),用戶越滿意。

現(xiàn)在回想起來真是哭笑不得,你也不能說這個回答有問題,Redis 用作緩存的一大亮點就是能夠加快數(shù)據(jù)查詢效率,但是如果從技術(shù)面試的角度看,這個回答其實更應(yīng)該從技術(shù)的角度去答,這也是促使筆者寫這篇文章的沖動之一。

2. 為什么要有 Redis 這項技術(shù)?(你為什么用 Redis)

如果現(xiàn)在再被問到為什么要用 Redis,筆者打算從計算機的存儲結(jié)構(gòu)開始聊。

計算機界有一本名書《深入理解計算機系統(tǒng)》,里面有一幅關(guān)于計算機存儲結(jié)構(gòu)的圖,非常經(jīng)典:

由圖可見計算機的存儲器是一個金字塔結(jié)構(gòu),越上層的存儲器存儲效率越高,越下層的存儲效率越低。而計算機中內(nèi)存的層級位于磁盤之上,內(nèi)存的存儲效率要比磁盤快得多。

正常情況下,我們會把應(yīng)用的數(shù)據(jù)存放在數(shù)據(jù)庫中,數(shù)據(jù)庫把數(shù)據(jù)存放在磁盤;而 Redis 是一款基于內(nèi)存的存儲系統(tǒng),數(shù)據(jù)都存在內(nèi)存里,這就是從 Redis 讀取數(shù)據(jù)比從數(shù)據(jù)庫讀取數(shù)據(jù)要快的根本原因了。

看到這里你可能會說,把數(shù)據(jù)存在內(nèi)存有啥了不起的,我可以用谷歌的 guava 呀!再不濟,我可以直接 new 一個 HashMap 存數(shù)據(jù)呀,這不都是基于內(nèi)存的嗎?

這個問題讓我聯(lián)想起了我在網(wǎng)上看面經(jīng)的時候看到的一道題:如果讓你設(shè)計一個緩存,你會怎么設(shè)計?

大家可以想一下 guava 和 Map 集合使用時的缺點是什么?

很明顯一點就是這兩者雖然基于內(nèi)存,但他們使用的是 jvm 的內(nèi)存,如果 jvm 掛掉或者重啟了,數(shù)據(jù)也就丟失了。這就能方便我們聯(lián)想到 Redis 的持久化機制,Redis 的持久化機制使得內(nèi)存中的數(shù)據(jù)能夠持久化到磁盤上,解決內(nèi)存數(shù)據(jù)掉電易失的問題,而且 Redis 是一款中間件,無需依賴于 jvm。

(當(dāng)初我只是死背 Redis 的持久化機制,并沒有想過為什么。我想搞清楚了這背后的關(guān)系后再去學(xué)習(xí),能夠?qū)W得更扎實一些吧)

再換一個角度:既然數(shù)據(jù)庫是因為磁盤才慢,那為啥不再內(nèi)存里實現(xiàn)數(shù)據(jù)庫呢?

還別說,SAP 公司還真有基于內(nèi)存的數(shù)據(jù)庫系統(tǒng),但是使用內(nèi)存有一個致命的缺點:那就是貴!能買得起那套軟件和巨大內(nèi)存機器的公司畢竟是少數(shù),所以說為什么要使用 Redis,就是因為他在低效的磁盤和昂貴的內(nèi)存中取了一個折中。

補充:面試的時候還被問到一個問題:Redis 的內(nèi)存淘汰機制

當(dāng)時直接懵圈了,后來想了一下其實這是一個再正常不過的考點了:Redis 把數(shù)據(jù)存放在內(nèi)存,內(nèi)存的空間有限,總會有用完的一天。當(dāng)內(nèi)存使用完之后肯定需要有相應(yīng)的內(nèi)存淘汰策略來釋放內(nèi)存。

不過說到內(nèi)存淘汰,我還想起一個高級點的知識點,由于 Redis 的內(nèi)存是有限的,我們使用內(nèi)存的時候應(yīng)該更加小心。Redis 內(nèi)部是有許多高效使用內(nèi)存的招數(shù)的,比如說我們存放用戶信息的時候,把用戶信息存成一個 hash,要比把用戶信息逐條用 key-value 存儲占的空間小得多,這些知識你可以在 Redid 的官網(wǎng)上找到。

3. 關(guān)于 Redis 的主從復(fù)制,哨兵,集群

在學(xué)習(xí) Redis 之前,我對分布式的知識了解得非常少。當(dāng)時為了面試背 Redis 的面試題,背到有關(guān)主從復(fù)制,哨兵,集群等知識點的時候,我既興奮又茫然。感覺自己背完后掌握了許多分布式的知識,但是把這些知識點都揉在一起了,根本不知道這背后的邏輯是什么。現(xiàn)在想通了一些,應(yīng)該好好記下來:

在擴展到多機之前,我們先想一下單機的 Redis 有什么缺點:

有可能出現(xiàn)單點故障,這樣 Redis 服務(wù)就不可用了

單一臺機器的內(nèi)存有限,存儲不了太多的數(shù)據(jù)

如果訪問量很大的話,單臺機器壓力會很大

通過第一個缺點,我們可以引出為什么需要主從復(fù)制和哨兵。大家想一想,如果我們只有一個 Redis 服務(wù),要是服務(wù)掛了就沒法用了,但如果我們安排多一臺 Redis 服務(wù)器,它的數(shù)據(jù)時刻與第一臺 Redis 的數(shù)據(jù)保持一致,這樣當(dāng)?shù)谝慌_ Redis 掛掉后,我們就可以把請求遷移到第二臺 Redis 上,這樣 Redis 服務(wù)的可用性就提高了。為了讓第二臺 Redis 的數(shù)據(jù)與第一臺 Redis 保持一致,我們就需要用到主從復(fù)制。

有時候,可能一主一從的配置還是不夠保險,這個時候我們就要為主節(jié)點配置兩個或以上的從節(jié)點,那么問題來了,要是主節(jié)點掛了,該通過什么方案在從節(jié)點中選出新的主節(jié)點呢?這就用到了哨兵機制。

而且在一主多從的情況下,我們使用主從復(fù)制讓多臺 Redis 的數(shù)據(jù)保持一致,這個時候我們就可以把讀請求分攤到從節(jié)點上,這樣能有效緩解主節(jié)點的讀壓力。

但如果 Redis 的寫請求壓力也很大,而且數(shù)據(jù)量很大,這個時候為 Redis 增加備份機的橫向擴展已經(jīng)幫不上什么忙了,這個時候我們就要考慮縱向擴展,增加多臺 Redis 分攤寫請求,讓不同的 key 落到不同的機器上。這個時候我們就要考慮使用一致性哈希等算法把不同的 key 分給不同的機器。

Redis 自身也提供了集群機制,但內(nèi)部使用的不是一致性哈希,而是哈希槽。簡單來說就是在哈希槽中劃分不同的區(qū)間,不同的區(qū)間對應(yīng)不同的機制;當(dāng)擴容或縮減的時候有相應(yīng)的哈希槽調(diào)整策略。

我最初學(xué)習(xí) Redis 的多機策略的時候就是搞不清楚集群,主從復(fù)制,哨兵機制之間的關(guān)系。其實集群就是一套完整的 Redis 多機解決方案,他有效解決了單機 Redis 的所有問題。當(dāng)你在集群中為某個節(jié)點配置從機的時候,主從節(jié)點間同步用的就是主從復(fù)制。主節(jié)點掛掉之后,從節(jié)點的選取,內(nèi)部的邏輯就和哨兵機制相似。當(dāng)我們使用集群機制的時候,就可以省去自己寫類似一致性哈希這樣的分攤邏輯,集群機制會給節(jié)點加上相應(yīng)的數(shù)據(jù)結(jié)構(gòu)來完成這些功能。

如果想深入了解集群背后的實現(xiàn)原理,我推薦這樣一個學(xué)習(xí)路線:

首先登錄官網(wǎng),按照官網(wǎng)的步驟學(xué)習(xí)配置主從復(fù)制,配置哨兵,搭建集群

然后看《Redis 的設(shè)計與實現(xiàn)》這本書,閱讀主從復(fù)制,哨兵和集群這三個章節(jié)

4. 后話

筆者覺得,如果把文章中提到的 Redis 的點都深入了解一下,Redis 基本能算入門了。

寫下這篇感想主要也是想提醒自己,學(xué)一項技術(shù)的時候多問為什么,這樣知識學(xué)到手后不容易忘掉。

至于為什么說只能說是入門 Redis,因為 Redis 的用法實在太多了,你可以把它當(dāng)作緩存,也可以把它當(dāng)成數(shù)據(jù)庫,甚至能把它當(dāng)作消息隊列。緩存可能大家都很熟悉了,在當(dāng)數(shù)據(jù)庫的方面 Redis 簡直是潛力無限,大家一定要善用它的 bitmap 位圖功能,簡直能在面對復(fù)雜需求的時候玩出花來。比如說老板要統(tǒng)計所有用戶一年中的登錄天數(shù),一個用戶只需要 365bit(46B)的空間,相比于用傳統(tǒng)的 mysql 不知道也節(jié)省多少倍的空間。

審核編輯 黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Redis
    +關(guān)注

    關(guān)注

    0

    文章

    382

    瀏覽量

    11266
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    Debian和Ubuntu哪個好一些

    兼容性對比Debian和Ubuntu哪個好一些,并為您揭示如何通過RAKsmart服務(wù)器釋放Linux系統(tǒng)的最大潛能。
    的頭像 發(fā)表于 05-07 10:58 ?104次閱讀

    如何添加一些網(wǎng)絡(luò)上的庫到mpy固件的說明或手冊教程?

    于如何添加一些網(wǎng)絡(luò)上的庫到mpy固件的說明或手冊教程? 問題2: 關(guān)于mpy的image庫在哪里能了解學(xué)習(xí)內(nèi)部代碼,只了解一些python,想知道怎么從c轉(zhuǎn)換成mpy能調(diào)用的,自己寫的c也能轉(zhuǎn)成py調(diào)用
    發(fā)表于 04-29 08:16

    redis三種集群方案詳解

    Redis中提供的集群方案總共有三種(redis節(jié)點不超過10G內(nèi)存)。
    的頭像 發(fā)表于 03-31 10:46 ?427次閱讀
    <b class='flag-5'>redis</b>三種集群方案詳解

    Redis實戰(zhàn)筆記

    在目前的技術(shù)選型中,Redis 儼然已經(jīng)成為了系統(tǒng)高性能緩存方案的事實標(biāo)準(zhǔn),因此現(xiàn)在?Redis 也成為了后端開發(fā)的基本技能樹之。 ? 基于上述情況,今天給大家分享份?杰哥?親筆撰
    的頭像 發(fā)表于 02-09 09:12 ?271次閱讀
    <b class='flag-5'>Redis</b>實戰(zhàn)筆記

    Redis Cluster之故障轉(zhuǎn)移

    1. Redis Cluster 簡介 Redis Cluster 是 Redis 官方提供的 Redis 集群功能。 為什么要實現(xiàn) Redis
    的頭像 發(fā)表于 01-20 09:21 ?685次閱讀
    <b class='flag-5'>Redis</b> Cluster之故障轉(zhuǎn)移

    AN29-關(guān)于DC-DC轉(zhuǎn)換器的一些想法

    電子發(fā)燒友網(wǎng)站提供《AN29-關(guān)于DC-DC轉(zhuǎn)換器的一些想法.pdf》資料免費下載
    發(fā)表于 01-08 13:57 ?0次下載
    AN29-關(guān)于DC-DC轉(zhuǎn)換器的<b class='flag-5'>一些</b>想法

    華為云 Flexus X 輕松實現(xiàn) Redis 主多從高效部署

    前言 ????????華為云 Flexus?X 是款專為高性能計算設(shè)計的云服務(wù)器實例,其搭載的 X-Turbo 加速技術(shù)和智能應(yīng)用調(diào)優(yōu)算法,能夠大幅提升 Redis 的處理能力和響應(yīng)速度。此外
    的頭像 發(fā)表于 12-27 13:45 ?408次閱讀
    華為云 Flexus X 輕松實現(xiàn) <b class='flag-5'>Redis</b> <b class='flag-5'>一</b>主多從高效部署

    一些關(guān)于ldc1000的spi通信的問題求解

    我有一些關(guān)于ldc1000的spi通信的問題。 應(yīng)用情況是spi16f887與ldc1000的spi通信 1.是否對于讀、寫,都是只需要把CSB變成低電平即可。 2.對于寫操作,寫地址時(例如
    發(fā)表于 12-26 08:23

    Redis緩存與Memcached的比較

    Redis和Memcached都是廣泛使用的內(nèi)存數(shù)據(jù)存儲系統(tǒng),它們主要用于提高應(yīng)用程序的性能,通過減少對數(shù)據(jù)庫的直接訪問來加速數(shù)據(jù)檢索。以下是對Redis和Memcached的比較,涵蓋了它們的一些
    的頭像 發(fā)表于 12-18 09:33 ?454次閱讀

    一些常見的動態(tài)電路

    無論是模電還是數(shù)電,理論知識相對來說還是比較枯燥,各種電路原理理解清楚不算容易,換種生動形象的方式或許會增加一些趣味性,也更容易理解這些知識。下面整理了
    的頭像 發(fā)表于 11-16 09:26 ?864次閱讀
    <b class='flag-5'>一些</b>常見的動態(tài)電路

    分享一些常見的電路

    理解模電和數(shù)電的電路原理對于初學(xué)者來說可能比較困難,但通過一些生動的教學(xué)方法和資源,可以有效地提高學(xué)習(xí)興趣和理解能力。 下面整理了一些常見的電路,以動態(tài)圖形的方式展示。 整流電路 單相
    的頭像 發(fā)表于 11-13 09:28 ?652次閱讀
    分享<b class='flag-5'>一些</b>常見的電路

    LED驅(qū)動器應(yīng)用的一些指南和技巧

    電子發(fā)燒友網(wǎng)站提供《LED驅(qū)動器應(yīng)用的一些指南和技巧.pdf》資料免費下載
    發(fā)表于 09-25 11:35 ?0次下載
    LED驅(qū)動器應(yīng)用的<b class='flag-5'>一些</b>指南和技巧

    Python遞歸的經(jīng)典案例

    當(dāng)我們碰到諸如需要求階乘或斐波那契數(shù)列的問題時,使用普通的循環(huán)往往比較麻煩,但如果我們使用遞歸時,會簡單許多,起到事半功倍的效果。這篇文章主要和大家分享一些和遞歸有關(guān)的經(jīng)典案例,結(jié)合一些資料談
    的頭像 發(fā)表于 08-05 15:57 ?551次閱讀

    咨詢一些關(guān)于LED燈具的問題

    各位大佬,咨詢一些關(guān)于LED燈具的問題 120W的吸頂燈,用的非隔離式電源,用不到1年,燈具就會閃爍、頻閃或不亮,主要是什么原因造成的?是不是驅(qū)動芯片太差?
    發(fā)表于 07-02 22:33

    智能跳繩的產(chǎn)品體驗與思考

    我,雖稱不上跳繩高手,卻對這項運動懷有深厚的熱愛,也曾在某電商平臺上選購過款智能跳繩,希望能借此提升我的跳繩技巧。今天,咱們就來聊聊我和這條繩子的發(fā)生的一些故事,外加我的一些思考
    的頭像 發(fā)表于 05-29 11:22 ?651次閱讀
    智能跳繩的產(chǎn)品體驗與<b class='flag-5'>思考</b>(<b class='flag-5'>一</b>)
    主站蜘蛛池模板: 久久伊人网站 | 色欧美视频 | 国产香蕉在线精彩视频 | 很黄的网站在线观看 | 国产白白白在线永久播放 | 精品成人在线观看 | 老色批在线播放视频网站免费 | 99色综合 | 国产综合免费视频 | 男人女人的免费视频网站 | h视频在线观看视频观看 | 久久精品影视 | 免费xxxx大片 | 欧美αv日韩αv另类综合 | 99国产在线| 精品国产一区二区三区成人 | 黄视频在线免费看 | 国内精品久久影视 | 国产黄色小视频网站 | 特黄特级毛片免费视 | www.淫.com| 日本免费视频 | 午夜国产精品理论片久久影院 | 奇米影视777四色米奇影院 | 亚洲国产成人久久精品图片 | 色视频www在线播放国产人成 | 韩国理论三级在线观看视频 | 国产精品一久久香蕉产线看 | sss欧美一区二区三区 | 四虎永久免费最新在线 | 日韩一级黄色录像 | 欧美性xxxxbbbb | 天天色操| 欲色影视 | 九九天天影视 | 国产又黄又爽又猛的免费视频播放 | 亚洲精品在线免费观看视频 | 欧美黄视频在线观看 | 一级特黄女毛毛片 | 制服丝袜在线一区 | 操一操干一干 |