久草最新视频-久草最新网址-久国产-久国产视频-天天插夜夜操-天天插一插

干貨 | 關(guān)于Redis 的面試題(Java面試)



 1.Redis是什么?
Redis本質(zhì)上是一個Key-Value類型的內(nèi)存數(shù)據(jù)庫,很像memcached,整個數(shù)據(jù)庫統(tǒng)統(tǒng)加載在內(nèi)存當(dāng)中進行操作,定期通過異步操作把數(shù)據(jù)庫數(shù)據(jù)flush到硬盤上進行保存。

因為是純內(nèi)存操作,Redis 的性能非常出色,每秒可以處理超過10萬次讀寫操作,是已知性能最快的Key-Value DB。

Redis的出色之處不僅僅是性能,Redis 最大的魅力是支持保存多種數(shù)據(jù)結(jié)構(gòu),此外單個value的最大限制是1GB,不像memcached只能保存1MB的數(shù)據(jù),因此Redis可以用來實現(xiàn)很多有用的功能。

比方說用他的List來做FIFO雙向鏈表,實現(xiàn)一個輕量級的高性能消息隊列服務(wù),用他的Set可以做高性能的tag系統(tǒng)等等。

2.Redis相比memcached有哪些優(yōu)勢?
① memcached所有的值均是簡單的字符串,redis作為 其替代者,支持更為豐富的數(shù)據(jù)類型
②redis的速度比memcached快很多
③ redis可以持久化其數(shù)據(jù)

3.Redis有哪幾種數(shù)據(jù)淘汰策略?
Redis有哪幾種數(shù)據(jù)淘汰策略?有noeviction、allkeys-lru、allkeys-random、volatile-random、volatile-ttl五種淘汰策略,下面我們分別介紹。

noeviction:返回錯誤當(dāng)內(nèi)存限制達到并且客戶端嘗試執(zhí)行會讓更多內(nèi)存被使用的命令(部分的寫入指令,但DEL和幾個例外)

allkeys-lru:嘗試回收最少使用的鍵(LRU),使得新添加的數(shù)據(jù)有空間存放。

volatile-lru:嘗試回收最少使用的鍵(LRU),但僅限于在過期集合的鍵,使得新添加的數(shù)據(jù)有空間存放。

allkeys-random:回收隨機的鍵使得新添加的數(shù)據(jù)有空間存放。

volatile-random:回收隨機的鍵使得新添加的數(shù)據(jù)有空間存放,但僅限于在過期集合的鍵。

volatile-ttl:回收在過期集合的鍵,并且優(yōu)先回收存活時間(TTL)較短的鍵,使得新添加的數(shù)據(jù)有空間存放

4.Redis所有數(shù)據(jù)放到內(nèi)存中的原因是什么?
Redis為了達到最快的讀寫速度將數(shù)據(jù)都讀到內(nèi)存中,并通過異步的方式將數(shù)據(jù)寫入磁盤。

所以redis具有快速和數(shù)據(jù)持久化的特征。如果不將數(shù)據(jù)放在內(nèi)存中,磁盤I/O速度為嚴重影響redis的性能。在內(nèi)存越來越便宜的今天,redis將會越來越受歡迎。如果設(shè)置了最大使用的內(nèi)存,則數(shù)據(jù)已有記錄數(shù)達到內(nèi)存限值后不能繼續(xù)插入新值。

5.Redis適合在哪些場景使用?
①會話緩存(Session Cache)
最常用的一種使用Redis的情景是會話緩存(session cache)。用Redis緩存會話比其他存儲(如Mem cached)的優(yōu)勢在于:Redis提供持久化。當(dāng)維護一個不是嚴格要求一致性的緩存時,如果用戶的購物車信息全部丟失,大部分人都會不高興的,現(xiàn)在,他們還會這樣嗎?

幸運的是,隨著Redis這些年的改進,很容易找到怎么恰當(dāng)?shù)氖褂肦edis來緩存會話的文檔。甚至廣為人知的商業(yè)平臺Magento也提供Redis的插件。

②全頁緩存(FPC)
除基本的會話token之外,Redis 還提供很簡便的FPC平臺。回到一致性問題,即使重啟了Redis實例,因為有磁盤的持久化,用戶也不會看到頁面加載速度的下降,這是一個極大改進,類似PHP本地FPC。

再次以Magento為例,Magento 提供一個插件來使用Redis 作為全頁緩存后端。

此外,對WordPress的用戶來說,Pantheon 有一個非常好的插件wp redis,這個插件能幫助你以最快速度加載你曾瀏覽過的頁面。

③隊列
Reids在內(nèi)存存儲引擎領(lǐng)域的一-大優(yōu)點是提供list和set操作,這使得Redis能作為一個很好的消息隊列平臺來使用。Redis作為隊列使用的操作,就類似于本地程序語言(如Python)對list 的push/pop操作。

如果你快速的在Google中搜索“Redis queues",你馬上就能找到大量的開源項目,這些項目的目的就是利用Redis創(chuàng)建非常好的后端工具,以滿足各種隊列需求。例如,Celery 有一個后臺就是使用Redis作為broker,你可以從這里去查看。

④排行榜/計數(shù)器
Redis在內(nèi)存中對數(shù)字進行遞增或遞減的操作實現(xiàn)的非常好。集合(Set)和有序集合(Sorted Set)也使得我們在執(zhí)行這些操作的時候變的非常簡單,Redis 只是正好提供了這

兩種數(shù)據(jù)結(jié)構(gòu)。所以,我們要從排序集合中獲取到排名最靠前的10個用戶-我們稱之為“user_scores", 我們只需要像下面一樣執(zhí)行即可:

當(dāng)然,這是假定你是根據(jù)你用戶的分數(shù)做遞增的排序。如果你想返回用戶及用戶的分數(shù),你需要這樣執(zhí)行:
ZRANGE user scores 0 10 WITHSCORES

Agora Games就是一個很好的例子,用Ruby實現(xiàn)的,它的排行榜就是使用Redis來存儲數(shù)據(jù)的,你可以在這里看到。

⑤發(fā)布/訂閱
最后(但肯定不是最不重要的)是Redis的發(fā)布/訂閱功能。發(fā)布/訂閱的使用場景確實非常多。我已看見人們在社交網(wǎng)絡(luò)連接中使用,還可作為基于發(fā)布/訂閱的腳本觸發(fā)器,甚至用Redis的發(fā)布/訂閱功能來建立聊天系統(tǒng)!

6.Redis集群方案哪些方案?
①codis
目前用的最多的集群方案,基本和twemproxy-致的效果,但它支持在節(jié)點數(shù)量改變情況下,舊節(jié)點數(shù)據(jù)可恢復(fù)到新hash節(jié)點。

②redis
cluster3.0自帶的集群,特點在于他的分布式算法不是一致性hash,而是hash槽的概念,以及自身支持節(jié)點設(shè)置從節(jié)點。具體看官方文檔介紹。

③在業(yè)務(wù)代碼層實現(xiàn)
起幾個毫無關(guān)聯(lián)的redis實例,在代碼層,對key進行hash計算,然后去對應(yīng)的redis實例操作數(shù)據(jù)。這種方式對hash層代碼要求比較高,考慮部分包括,節(jié)點失效后的替代算法方案,數(shù)據(jù)震蕩后的自動腳本恢復(fù),實例的監(jiān)控,等等。

北大青鳥網(wǎng)上報名
北大青鳥招生簡章
主站蜘蛛池模板: 欧美一级在线全免费| 日韩欧美亚洲综合一区二区| 夜夜嗨影视| 污污网站国产精品白丝袜| 日韩色图区| 亚洲天天综合| 欧美日韩一区二区在线观看视频| 欧美日韩亚洲成色二本道三区 | 亚洲欧美日韩精品久久奇米色影视| 亚洲日本高清成人aⅴ片| 日韩a级一片在线观看| 亚洲狠狠综合久久| 亚洲人成一区二区三区| 亚洲碰碰| 日韩特级片| 日b视频在线观看| 天天躁夜夜躁狠狠躁20216| 特a级黄色片| 亚洲国产精品网站久久| 日本三级网站在线观看| 亚洲天天更新| 天堂中文字幕| 亚洲成人777| 日韩欧美在线中文字幕| 一级久久久| 日本αv| 一本高清| 婷婷人人爽人人做人人添| 色久网| 日韩欧美精品综合久久| 色女网站| 一级毛片免费不卡在线视频| 欧美操操操操| 亚洲图片中文字幕| 四虎成人免费大片在线| 亚欧成人一区二区| 欧美一块操| 四虎国产在线观看| 亚洲色图国产| 亚洲精美视频| 日本一区二区三区久久久久|