Web前端求职时都会被问到的Redis面试题分享
Web前端人員怎么求職?Redis面試題有哪些?Redis(全稱:Remote Dictionary Server 遠程字典服務)是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。很多人在Web前端求職時都會被問到Redis相關問題,尤其是在BRT類名企,接下來小千就給大家分享一下。
1、Redis相比memcached有哪些優勢?
memcached所有的值均是簡單的字符串,redis作為其替代者, 支持更為豐富的數據類型;
redis的速度比memcached快很多;
redis可以持久化其數據。
2、Redis有哪幾種數據淘汰策略?
noeviction:返回錯誤當內存限制達到并且客戶端嘗試執行會讓更多內存被使用的命令(大部分的寫入指令,但DEL和幾個例外)。
allkeys-lru: 嘗試回收最少使用的鍵(LRU),使得新添加的數據有空間存放。
volatile-lru: 嘗試回收最少使用的鍵(LRU),但僅限于在過期集合的鍵,使得新添加的數據有空間存放。
allkeys-random: 回收隨機的鍵使得新添加的數據有空間存放。
volatile-random: 回收隨機的鍵使得新添加的數據有空間存放,但僅限于在過期集合的鍵。volatile-ttl: 回收在過期集合的鍵,并且優先回收存活時間(TTL)較短的鍵,使得新添加的數據有空間存放。
3、Redis是單線程還是多線程?有何優勢?
Redis是單線程,但是Redis 6發布后,它其實是支持多線程的。Redis是多線程的優勢有兩點:
1)單線程Redis的性能瓶頸主要在于網絡的IO消耗,所以我們在優化的方向就是要提高網絡IO性能。
2)Redis 6 引入的多線程IO特性對性能提升至少是一倍以上。Redis的多線程部分只是用來處理網絡數據的讀寫和協議解析,執行命令仍然是單線程。
4、Redis主從復制會出現哪些問題?
1)一旦主節點宕機,從節點晉升為主節點,同時需要修改應用方的主節點地址,還需要命令所有從節點去復制新的主節點,整個過程需要人工干預。
2)主節點的寫能力受到單機的限制。
3)主節點的存儲能力受到單機的限制。
4)原生復制的弊端在早期的版本中也會比較突出,比如:redis復制中斷后,從節點會發起psync。此時如果同步不成功,則會進行全量同步,主庫執行全量備份的同時,可能會造成毫秒或秒級的卡頓。
5、為什么Redis需要把所有數據放到內存中?
Redis為了達到最快的讀寫速度將數據都讀到內存中,并通過異步的方式將數據寫入磁盤。所以Redis具有快速和數據持久化的特征。如果不將數據放在內存中,磁盤I/O速度為嚴重影響Redis的性能。在內存越來越便宜的今天,Redis將會越來越受歡迎。
如果設置了最大使用的內存,則數據已有記錄數達到內存限值后不能繼續插入新值。
6、有哪些Redis分區實現方案?
客戶端分區就是在客戶端就已經決定數據會被存儲到哪個Redis節點或者從哪個Redis節點讀取。大多數客戶端已經實現了客戶端分區。代理分區 意味著客戶端將請求發送給代理,然后代理決定去哪個節點寫數據或者讀數據。
代理根據分區規則決定請求哪些Redis實例,然后根據Redis的響應結果返回給客戶端。Redis和memcached的一種代理實現就是Twemproxy查詢路由(Query routing) 的意思是客戶端隨機地請求任意一個Redis實例,然后由Redis將請求轉發給正確的Redis節點。
Redis Cluster實現了一種混合形式的查詢路由,但并不是直接將請求從一個Redis節點轉發到另一個Redis節點,而是在客戶端的幫助下直接redirected到正確的Redis節點。
7、Redis持久化數據和緩存怎么做擴容?
如果Redis被當做緩存使用,使用一致性哈希實現動態擴容縮容。如果Redis被當做一個持久化存儲使用,必須使用固定的keys-to-nodes映射關系,節點的數量一旦確定不能變化。否則的話(即Redis節點需要動態變化的情況),必須使用可以在運行時進行數據再平衡的一套系統,而當前只有Redis集群可以做到這樣。
8、Redis與其他key-value存儲有什么不同?
Redis有著更為復雜的數據結構并且提供對他們的原子性操作,這是一個不同于其他數據庫的進化路徑。Redis的數據類型都是基于基本數據結構的同時對程序員透明,無需進行額外的抽象。Redis運行在內存中但是可以持久化到磁盤,所以在對不同數據集進行高速讀寫時需要權衡內存,應為數據量不能大于硬件內存。在內存數據庫方面的另一個優點是, 相比在磁盤上相同的復雜的數據結構,在內存中操作起來非常簡單,這樣Redis可以做很多內部復雜性很強的事情。 同時,在磁盤格式方面他們是緊湊的以追加的方式產生的,因為他們并不需要進行隨機訪問。
想了解更多Redis面試題及答案,歡迎關注小千,后期會繼續分享Web前端相關技術知識。
本文來自??千鋒教育??,轉載請注明出處。
總結
以上是生活随笔為你收集整理的Web前端求职时都会被问到的Redis面试题分享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 入门Java开发,这三大知识体系你要知道
- 下一篇: 2022年学Web前端怎么样?还有发展前