java redis 面试题_Java开发人员怎么面试 常见Redis面试题有哪些
Java開發(fā)人員怎么面試?常見Redis面試題有哪些?Redis是目前各大企業(yè)都在使用的人們技術(shù),也是企業(yè)選拔人才時考核的一個難題。有很多同學(xué)只是簡單了解Redis的應(yīng)用,但對于為什么要用Redis以及企業(yè)面試中有關(guān)Redis的問題卻答不上來。接下來千鋒就給大家簡單分析一下。
為什么使用Redis?
項(xiàng)目中使用Redis,主要考慮性能和并發(fā)兩個方面。在大并發(fā)的情況下,所有的請求直接訪問數(shù)據(jù)庫,數(shù)據(jù)庫會出現(xiàn)連接異常。這個時候,就需要使用Redis做一個緩沖操作,讓請求先訪問到Redis,而不是直接訪問數(shù)據(jù)庫。不過,Redis也有慢查詢操作。根據(jù)交互效果的不同,響應(yīng)時間沒有固定標(biāo)準(zhǔn)。在理想狀態(tài)下,我們的頁面跳轉(zhuǎn)需要在瞬間解決,對于頁內(nèi)操作則需要在剎那間解決。
Redis的數(shù)據(jù)類型有哪些?
數(shù)據(jù)類型:
1)String:一般做一些復(fù)雜的計(jì)數(shù)功能的緩存;
2)Hash:存儲二維數(shù)據(jù)或?qū)ο?
3)List:可實(shí)現(xiàn)隊(duì)列,棧及有序的數(shù)據(jù)存儲;
4)Set:常用于黑名單,微信抽獎等功能,應(yīng)用場景多變;
5)SortedSet:做排行榜應(yīng)用,取TOPN操作;延時任務(wù);做范圍查找。
Redis持久化機(jī)制是什么?
Redis是一個支持持久化的內(nèi)存數(shù)據(jù)庫,通過持久化機(jī)制把內(nèi)存中的數(shù)據(jù)同步到硬盤文件來保證數(shù)據(jù)持久化。當(dāng)Redis重啟后通過把硬盤文件重新加載到內(nèi)存,就能達(dá)到恢復(fù)數(shù)據(jù)的目的。
實(shí)現(xiàn):單獨(dú)創(chuàng)建fork()一個子進(jìn)程,將當(dāng)前父進(jìn)程的數(shù)據(jù)庫數(shù)據(jù)復(fù)制到子進(jìn)程的內(nèi)存中,然后由子進(jìn)程寫入到臨時文件中,持久化的過程結(jié)束了,再用這個臨時文件替換上次的快照文件,然后子進(jìn)程退出,內(nèi)存釋放。
RDB是Redis默認(rèn)的持久化方式。按照一定的時間周期策略把內(nèi)存的數(shù)據(jù)以快照的形式保存到硬盤的二進(jìn)制文件。即Snapshot快照存儲,對應(yīng)產(chǎn)生的數(shù)據(jù)文件為dump.rdb,通過配置文件中的save參數(shù)來定義快照的周期。( 快照可以是其所表示的數(shù)據(jù)的一個副本,也可以是數(shù)據(jù)的一個復(fù)制品。)
AOF:Redis會將每一個收到的寫命令都通過Write函數(shù)追加到文件最后,類似于MySQL的binlog。當(dāng)Redis重啟是會通過重新執(zhí)行文件中保存的寫命令來在內(nèi)存中重建整個數(shù)據(jù)庫的內(nèi)容。
當(dāng)兩種方式同時開啟時,數(shù)據(jù)恢復(fù)Redis會優(yōu)先選擇AOF恢復(fù)。
單線程的Redis為什么這么快?
1)純內(nèi)存操作
2)單線程操作,避免了頻繁的上下文切換
3)采用了非阻塞I/O多路復(fù)用機(jī)制
Memcache與Redis的區(qū)別都有哪些?
1)存儲方式 Memecache把數(shù)據(jù)全部存在內(nèi)存之中,斷電后會掛掉,數(shù)據(jù)不能超過內(nèi)存大小。 Redis有部份存在硬盤上,redis可以持久化其數(shù)據(jù)。
2)數(shù)據(jù)支持類型 memcached所有的值均是簡單的字符串,redis作為其替代者,支持更為豐富的數(shù)據(jù)類型 ,提供list,set,zset,hash等數(shù)據(jù)結(jié)構(gòu)的存儲。
3)使用底層模型不同 它們之間底層實(shí)現(xiàn)方式 以及與客戶端之間通信的應(yīng)用協(xié)議不一樣。Redis直接自己構(gòu)建了VM機(jī)制 ,因?yàn)橐话愕南到y(tǒng)調(diào)用系統(tǒng)函數(shù)的話,會浪費(fèi)一定的時間去移動和請求。
4)value 值大小不同:Redis 最大可以達(dá)到1gb;memcache只有1mb。
5)redis的速度比memcached快很多
6)Redis支持?jǐn)?shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。
如果你想學(xué)習(xí)Java編程開發(fā),又沒有什么編程基礎(chǔ),可以通過專業(yè)的方式學(xué)習(xí)Java編程,專業(yè)的學(xué)習(xí)能幫助零基礎(chǔ)的人快速入門Java。
總結(jié)
以上是生活随笔為你收集整理的java redis 面试题_Java开发人员怎么面试 常见Redis面试题有哪些的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是国六B标准?影响汽车价格吗?
- 下一篇: 生活中如何避免车辆故障?