




已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
筆記本:18-Redis 創(chuàng)建時間:2019/9/7 21:57更新時間:2019/9/7 21:57 作者:pc941206 碼農(nóng)求職小助手:Redis高頻面試題 更多資料請關(guān)注微信公眾號:碼農(nóng)求職小助手 1、redis 是什么?都有哪些使用場景? 2、redis 有哪些功能? 3、redis 和 memecache 有什么區(qū)別? 4、redis 為什么是單線程的? redis 支持的數(shù)據(jù)類型有哪些? 什么是緩存雪崩?該如何解決? 什么是緩存雪崩? 如何解決緩存雪崩? 5、什么是緩存穿透?怎么解決? 什么是緩存穿透? 緩存穿透的解決方案? 緩存與數(shù)據(jù)庫雙寫一致問題 對于讀操作 什么是緩存與數(shù)據(jù)庫雙寫一致問題? 怎么保證緩存和數(shù)據(jù)庫數(shù)據(jù)的一致性? 8、redis 持久化有幾種方式? 9、redis 怎么實現(xiàn)分布式鎖? 10、redis 分布式鎖有什么缺陷? 11、redis 如何做內(nèi)存優(yōu)化? 12、redis 淘汰策略有哪些? 13、redis 常見的性能問題有哪些?該如何解決? 1、redis 是什么?都有哪些使用場景? redis 是一個開源的使用 ANSI C 語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志 型、Key-Value數(shù)據(jù)庫,并提供多種語言的 API。 redis 使用場景: 1、數(shù)據(jù)高并發(fā)的讀寫; 2、海量數(shù)據(jù)的讀寫; 3、對擴(kuò)展性要求高的數(shù)據(jù)。 2、redis 有哪些功能? 1、數(shù)據(jù)緩存功能; 2、分布式鎖的功能; 3、支持?jǐn)?shù)據(jù)持久化; 4、支持事務(wù); 5、支持消息隊列。 3、redis 和 memecache 有什么區(qū)別? 1、memcached 所有的值均是簡單的字符串,redis 作為其替代者,支持更為豐富的數(shù)據(jù) 類型; 2、redis 的速度比 memcached 快很多; 3、redis 可以持久化其數(shù)據(jù)。 4、redis 為什么是單線程的? 因為 cpu 不是 redis 的瓶頸,redis 的瓶頸最有可能是機(jī)器內(nèi)存或者網(wǎng)絡(luò)帶寬。既然 單線程容易實現(xiàn),而且 cpu 又不會成為瓶頸,那就順理成章地采用單線程的方案了。 關(guān)于 redis 的性能,官方網(wǎng)站也有,普通筆記本輕松處理每秒幾十萬的請求。而且單 線程并不代表就慢, nginx 和 nodejs 也都是高性能單線程的代表。 redis 支持的數(shù)據(jù)類型有哪些? string、list、hash、set、zset。 什么是緩存雪崩?該如何解決? 緩存都掛掉了,所有的請求都走數(shù)據(jù)庫了。 我們都知道 Redis 不可能把所有的數(shù)據(jù)都緩存起來(內(nèi)存昂貴且有限),所以 Redis 需要對數(shù)據(jù)設(shè)置過期時間,并采用的是惰性刪除+定期刪除兩種策略對過期鍵刪除。 如果緩存數(shù)據(jù)設(shè)置的過期時間是相同的,并且 Redis 恰好將這部分?jǐn)?shù)據(jù)全部刪光了。 這就會導(dǎo)致在這段時間內(nèi),這些緩存同時失效,全部請求到數(shù)據(jù)庫中。這就是緩存雪崩: Redis 掛掉了,請求全部走數(shù)據(jù)庫。 緩存雪崩如果發(fā)生了,很可能就把我們的數(shù)據(jù)庫搞 垮,導(dǎo)致整個服務(wù)癱瘓。 1、在緩存的時候給過期時間加上一個隨機(jī)值,這樣就會大幅度的減少緩存在同一時間過 期。 2、對于“Redis 掛掉了,請求全部走數(shù)據(jù)庫”這種情況,我們可以有以下的思路: (1)事發(fā)前:實現(xiàn) Redis 的高可用(主從架構(gòu)+ Sentinel 或者 Redis Cluster),盡量避免 Redis 掛掉這種情況發(fā)生。 什么是緩存雪崩? 如何解決緩存雪崩? (2)事發(fā)中:萬一 Redis 真的掛了,我們可以設(shè)置本地緩存(ehcache)+限流(hystrix), 盡量避免我們的數(shù)據(jù)庫被干掉(起碼能保證我們的服務(wù)還是能正常工作的); (3)事發(fā)后:redis 持久化,重啟后自動從磁盤上加載數(shù)據(jù),快速恢復(fù)緩存數(shù)據(jù)。 5、什么是緩存穿透?怎么解決? 緩存穿透:指查詢一個一定不存在的數(shù)據(jù),由于緩存是不命中時需要從數(shù)據(jù)庫查詢,查不 到數(shù)據(jù)則不寫入緩存,這將導(dǎo)致這個不存在的數(shù)據(jù)每次請求都要到數(shù)據(jù)庫去查詢,造成緩 存穿透。 1、由于請求的參數(shù)是不合法的(每次都請求不存在的參數(shù)),于是我們可以使用布隆過濾 器(BloomFilter) 或者壓縮 filter 提前攔截,不合法就不讓這個請求到數(shù)據(jù)庫層; 什么是緩存穿透? 緩存穿透的解決方案? 2、最簡單粗暴的方法如果一個查詢返回的數(shù)據(jù)為空(不管是數(shù)據(jù)不存在,還是系統(tǒng)故 障),我們就把這個空結(jié)果進(jìn)行緩存,但它的過期時間會很短,最長不超過五分鐘。 緩存與數(shù)據(jù)庫雙寫一致問題 流程是這樣的如果我們的數(shù)據(jù)在緩存里邊有,那么就直接取緩存的。如果緩存里沒有 我們想要的數(shù)據(jù),我們會先去查詢數(shù)據(jù)庫,然后將數(shù)據(jù)庫查出來的數(shù)據(jù)寫到緩存中。最后 將數(shù)據(jù)返回給請求。 如果僅僅查詢的話,緩存的數(shù)據(jù)和數(shù)據(jù)庫的數(shù)據(jù)是沒問題的。但是,當(dāng)我們要更新時 候呢?各種情況很可能就造成數(shù)據(jù)庫和緩存的數(shù)據(jù)不一致了。這里不一致指的是:數(shù)據(jù)庫 的數(shù)據(jù)跟緩存的數(shù)據(jù)不一致。 怎么保證緩存和數(shù)據(jù)庫數(shù)據(jù)的一致性? 1、從理論上說,只要我們設(shè)置了合理的鍵的過期時間,我們就能保證緩存和數(shù)據(jù)庫的數(shù)據(jù) 最終是一致的。因為只要緩存數(shù)據(jù)過期了,就會被刪除。隨后讀的時候,因為緩存里沒 有,就可以查數(shù)據(jù)庫的數(shù)據(jù),然后將數(shù)據(jù)庫查出來的數(shù)據(jù)寫入到緩存中。除了設(shè)置過期時 間,我們還需要做更多的措施來盡量避免數(shù)據(jù)庫與緩存處于不一致的情況發(fā)生。 2、新增、更改、刪除數(shù)據(jù)庫操作時同步更新 redis,可以使用事物機(jī)制來保證數(shù)據(jù)的一致 性。 對于讀操作 什么是緩存與數(shù)據(jù)庫雙寫一致問題? 8、redis 持久化有幾種方式? redis 的持久化有兩種方式,或者說有兩種策略: 1、RDB(Redis Database):指定的時間間隔能對你的數(shù)據(jù)進(jìn)行快照存儲; 2、AOF(Append Only File):每一個收到的寫命令都通過 write 函數(shù)追加到文件中。 9、redis 怎么實現(xiàn)分布式鎖? redis 分布式鎖其實就是在系統(tǒng)里面占一個“坑”,其他程序也要占“坑”的時候,占 用成功了就可以繼續(xù)執(zhí)行,失敗了就只能放棄或稍后重試。 占坑一般使用 setnx(set if not exists)指令,只允許被一個程序占有,使用完調(diào) 用 del 釋放鎖。 10、redis 分布式鎖有什么缺陷? redis 分布式鎖不能解決超時的問題,分布式鎖有一個超時時間,程序的執(zhí)行如果超出 了鎖的超時時間就會出現(xiàn)問題。 11、redis 如何做內(nèi)存優(yōu)化? 盡可能使用散列表(hash),散列表(是說散列表里面存儲的數(shù)少)使用的內(nèi)存非常 小,所以你應(yīng)該盡可能的將你的數(shù)據(jù)模型抽象到一個散列表里面。 比如你的 web 系統(tǒng)中有一個用戶對象,不要為這個用戶的名稱,姓氏,郵箱,密碼設(shè) 置單獨的 key,而是應(yīng)該把這個用戶的所有信息存儲到一張散列表里面。 12、redis 淘汰策略有哪些? 1、volatile-lru:從已設(shè)置過期時間的數(shù)據(jù)集(server. dbi. expires)中挑選最近最少使 用的數(shù)據(jù)淘汰。 2、volatile-ttl:從已設(shè)置過期時間的數(shù)據(jù)集(server. dbi. expires)中挑選將要過期的 數(shù)據(jù)淘汰。 3、volatile-random:從已設(shè)置過期時間的數(shù)據(jù)集(server. dbi. expires)中任意選擇 數(shù)據(jù)淘汰。 4、allkeys-lru:從數(shù)據(jù)集(server. dbi. dict)中挑選最近最少使用的數(shù)據(jù)淘汰。 5、allkeys-random:從數(shù)據(jù)集(server. dbi. dict)中任意選擇數(shù)據(jù)淘汰。 6、no-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 預(yù)算會計考試試題及答案
- 銀行面試題目大全及答案
- 央企國企面試題及答案
- 修車消防考試題及答案
- 信合銀行筆試題庫及答案
- 電子政務(wù)信息安全防護(hù)方案設(shè)計與實施協(xié)議
- 新公務(wù)員法試題及答案
- 直播帶貨平臺與主播收益分成合同
- 幼兒園教師全職聘用合同(科學(xué)探索活動專項)
- 影視拍攝場地餐飲安全監(jiān)管補(bǔ)充協(xié)議
- 北京北大方正軟件職業(yè)技術(shù)學(xué)院《實踐中的馬克思主義新聞觀》2023-2024學(xué)年第二學(xué)期期末試卷
- 煤炭產(chǎn)品質(zhì)量保障措施
- 2025福建中考:數(shù)學(xué)必背知識點
- 2025年下半年甘肅張掖市山丹縣事業(yè)單位招聘112人(第二批)易考易錯模擬試題(共500題)試卷后附參考答案
- 合作種植協(xié)議書合同
- 自愿離婚協(xié)議書電子版
- 2025-2030中國釀酒行業(yè)市場發(fā)展現(xiàn)狀及商業(yè)模式與投資發(fā)展研究報告
- 2025年陜西咸陽亨通電力(集團(tuán))有限公司招聘筆試參考題庫附帶答案詳解
- 【水利水電】李想 案例專項班教案 04-案例專項班(四)
- 光影中國學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- DLT 572-2021 電力變壓器運行規(guī)程
評論
0/150
提交評論