Java工程師該怎麼面試?Redis問題及答案有哪些?Redis是Nosql資料庫,是一個高性能的key-value資料庫,得到了很多企業的重視及應用,在Java工程師面試的過程中,企業也會重點考察求職者對Redis的掌握程度。下面就給大家分享一些常見的Redis面試題及答案,希望能夠幫助小夥伴們順利通過面試考驗。

1、Redis的特點是什麼?
Redis的性能非常出色,每秒可以處理超過10萬次讀寫操作,是已知性能最快的Key-Value DB。Redis最大的魅力是支援儲存多種資料結構,此外單個value的最大限制是1GB,不像memcached隻能儲存1MB的資料,可以用來實作很多有用的功能。Redis可以對存入的Key-Value設定expire時間,是以也可以被當作一個功能加強版的memcached來用。
Redis的主要缺點是資料庫容量受到實體記憶體的限制,不能用作海量資料的高性能讀寫,是以Redis适合的場景主要局限在較小資料量的高性能操作和運算上。
2、Memcache與Redis的差別都有哪些?
1)資料支援類型:Memcache對資料類型支援相對簡單。 Redis有複雜的資料類型。
2)儲方式:Memecache把資料全部存在記憶體之中,斷電後會挂掉,資料不能超過記憶體大小。 Redis有部份存在硬碟上,這樣能保證資料的持久性。
3)使用底層模型不同:它們之間底層實作方式 以及與用戶端之間通信的應用協定不一樣。 Redis直接自己建構了VM 機制 ,因為一般的系統調用系統函數的話,會浪費一定的時間去移動和請求。
3、為什麼Redis需要把所有資料放到記憶體中?
Redis為了達到最快的讀寫速度将資料都讀到記憶體中,并通過異步的方式将資料寫入磁盤。是以redis具有快速和資料持久化的特征。如果不将資料放在記憶體中,磁盤I/O速度為嚴重影響redis的性能。如果設定了最大使用的記憶體,則資料已有記錄數達到記憶體限值後不能繼續插入新值。
4、Redis的并發競争問題如何解決?
Redis為單程序單線程模式,采用隊列模式将并發通路變為串行通路。Redis本身沒有鎖的概念,Redis對于多個用戶端連接配接并不存在競争,但是在Jedis用戶端對Redis進行并發通路時會發生連接配接逾時、資料轉換錯誤、阻塞、用戶端關閉連接配接等問題,這些問題均是由于用戶端連接配接混亂造成。對此有2種解決方法:
用戶端角度,為保證每個用戶端間正常有序與Redis進行通信,對連接配接進行池化,同時對用戶端讀寫Redis操作采用内部鎖synchronized。需要應用程式自己處理資源的同步,可以使用的方法比較通俗,可以使用synchronized也可以使用lock。
伺服器角度,利用setnx實作鎖,需要用到Redis的setnx指令,但是需要注意一些問題。
5、Redis持久化的幾種方式
1)快照(snapshots)。預設情況情況下,Redis把資料快照存放在磁盤上的二進制檔案中,檔案名為dump。rdb。你可以配置Redis的持久化政策,例如資料集中每N秒鐘有超過M次更新,就将資料寫入磁盤;或者你可以手工調用指令SAVE或BGSAVE。
2)AOF。快照模式并不十分健壯,當系統停止,或者無意中Redis被kill掉,最後寫入Redis的資料就會丢失。Append-only檔案模式是另一種選擇,你可以在配置檔案中打開AOF模式。
3)虛拟記憶體方式。當你的key很小而value很大時,使用VM的效果會比較好。因為這樣節約的記憶體比較大。當你的key不小時,可以考慮使用一些非常方法将很大的key變成很大的value,比如你可以考慮将key,value組合成一個新的value。
6、Redis最适合的場景
會話緩存(Session Cache)、全頁緩存(FPC)、隊列、排行榜/計數器、釋出/訂閱。
想要更快更好的通過企業面試,你需要對企業的招聘需求有所了解,專業的Java開發技能是前提。