亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

面試疑問

寫在前面,看過本文,讓那些沒使用過redis的也能回答上來面試官的問題,不至于陷入太尷尬的境地!因?yàn)楝F(xiàn)在好多面試官不單單只是問你,用沒用過redis,而是會(huì)一直問下去,比如:你項(xiàng)目里面用redis做什么?里面放什么數(shù)據(jù)?什么類型?對(duì)于list類型的數(shù)據(jù),我更改了一個(gè)如何高效率的刷新redis緩存?

面試寶典之Redis!看這一篇就夠了!僅此一篇!

 

帶著這些疑問我們下面去討論。希望各位大佬勇于補(bǔ)充。

Redis簡介:

面試寶典之Redis!看這一篇就夠了!僅此一篇!

 

如大家所知道的一樣,Redis是一個(gè)開源的使用ANSI C語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(區(qū)別于MySQL等關(guān)系型數(shù)據(jù)庫),并提供多種語言的API調(diào)用方案。

Redis存儲(chǔ)數(shù)據(jù)結(jié)構(gòu):

一共支持五種數(shù)據(jù)類:

string(字符串)

hash(哈希)

list(列表)

set(集合)

zset(sorted set有序集合)。

Redis內(nèi)存占用情況:

測試情況:90萬個(gè)鍵值對(duì)(鍵是0到899999值是字符串“hello world”)在32位操作系統(tǒng)的筆記本上 用了90MB,但是使用64位的操作系統(tǒng)的話,相對(duì)來說占用的內(nèi)存會(huì)多一點(diǎn),這是因?yàn)?4位的系統(tǒng)里指針占用了8個(gè)字節(jié),但是64位系統(tǒng)也能支持更大的內(nèi)存,所以運(yùn)行大型的redis服務(wù)還是建議使用64位服務(wù)器。

堅(jiān)持一個(gè)原則:使用數(shù)據(jù)庫能解決的業(yè)務(wù)場景,就不要使用REDIS。

Redis使用場景:

  • 排行榜
  • 序列號(hào)
  • 計(jì)數(shù)器
  • 流水號(hào)
  • 驗(yàn)證碼
  • 用戶信息
  • token
  • 菜單
  • 最新列表
  • 關(guān)注列表
  • 分布式鎖與單線程機(jī)制
面試寶典之Redis!看這一篇就夠了!僅此一篇!

 

下面具體說下每個(gè)數(shù)據(jù)類型的使用場景,也好應(yīng)付面試官的隨機(jī)發(fā)問。

  • Zset使用場景
  1. 數(shù)據(jù)結(jié)構(gòu):ZSET
  2. 關(guān)鍵API:zadd、zincrBy、zrevrank、zscore、zrevrangeWithScores
  3. 場景:金主榜、活動(dòng)昨日榜、今日榜、本周榜、上周榜
  • String使用場景
  1. 數(shù)據(jù)結(jié)構(gòu):STRING
  2. 關(guān)鍵API:incr、decr、set、get
  3. 場景:點(diǎn)贊數(shù)、驗(yàn)證碼(過期時(shí)間)、token
  4. 用于數(shù)據(jù)量上億的場景下,例如幾億用戶系統(tǒng)的簽到,去重登錄次數(shù)統(tǒng)計(jì),某用戶是否在線狀態(tài)等等。
  5. 數(shù)億用戶,要幾個(gè)毫秒內(nèi)查詢到某個(gè)用戶是否在線?
  6. 原理是:redis內(nèi)構(gòu)建一個(gè)足夠長的數(shù)組,每個(gè)數(shù)組元素只能是0和1兩個(gè)值,下標(biāo)index用來表示用戶id(必須是數(shù)字),那么很顯然,這個(gè)幾億長的大數(shù)組就能通過下標(biāo)和元素值(0和1)來構(gòu)建一個(gè)記憶系統(tǒng),上面我說的幾個(gè)場景也就能夠?qū)崿F(xiàn)。
  • Hash使用場景
  1. 數(shù)據(jù)結(jié)構(gòu):HASH
  2. 關(guān)鍵API:hget、hset、hgetall
  3. 存儲(chǔ)部分變更數(shù)據(jù)如用戶信息等
  • SET使用場景
  1. 數(shù)據(jù)結(jié)構(gòu):SET
  2. 關(guān)鍵API:sadd、spop、smembers、sunion、sinter
  3. 場景:關(guān)注列表、粉絲列表
  4. 可以將一個(gè)用戶所有的關(guān)注人存在一個(gè)集合中,將其所有粉絲存在一個(gè)集合。Redis還為集合提供了求交集、并集、差集等操作,可以非常方便的實(shí)現(xiàn)如共同關(guān)注、共同喜好、二度好友等功能,對(duì)上面的所有集合操作。
  5. Set是集合,是String類型的無序集合,set是通過hashtable實(shí)現(xiàn)的,概念和數(shù)學(xué)中個(gè)的集合基本類似,可以交集,并集,差集等等,set中的元素是沒有順序的。

名詞解釋:

  • 緩存穿透

緩存穿透是指查詢一個(gè)一定不存在的數(shù)據(jù),由于緩存是不命中時(shí)被動(dòng)寫的,并且出于容錯(cuò)考慮,如果從存儲(chǔ)層查不到數(shù)據(jù)則不寫入緩存,這將導(dǎo)致這個(gè)不存在的數(shù)據(jù)每次請(qǐng)求都要到存儲(chǔ)層去查詢,失去了緩存的意義。在流量大時(shí),可能DB就掛掉了。

業(yè)界比價(jià)普遍的一種做法,即根據(jù)key獲取value值為空時(shí),鎖上,從數(shù)據(jù)庫中l(wèi)oad數(shù)據(jù)后再釋放鎖。若其它線程獲取鎖失敗,則等待一段時(shí)間后重試。這里要注意,分布式環(huán)境中要使用分布式鎖,單機(jī)的話。用普通的鎖(synchronized、Lock)就夠了。

  • 緩存雪崩

緩存在同一時(shí)間內(nèi)大量鍵過期(失效),接著來的一大波請(qǐng)求瞬間都落在了數(shù)據(jù)庫中導(dǎo)致連接異常。

面試寶典之Redis!看這一篇就夠了!僅此一篇!
 

分享到:
標(biāo)簽:Redis
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評(píng)定2018-06-03

通用課目體育訓(xùn)練成績評(píng)定