Redis(五):常見面試題目詳解

1、什麼是Redis

Redis 是一個基於內存的高性能 key-value數據庫。支持多種數據類型

2、簡單描述Redis的特點

Redis本質上是一個key-value類型的內存數據庫,很像memcached,整個數據庫統統加載在內存當中進行操作,定期通過異步操作把數據庫數據(內存中)flush到硬盤上進行保存。

純內存操作,Redis的性能非常出色,每秒可以處理超過10萬次讀寫操作,是已知性能最快的key-value DB

Redis的出色之處,不僅僅是性能,Redis最大的魅力是支持保存多種數據結構;

此外,當個value的最大限制是1GB,不像memcached只能保存1MB的數據,因此Redis可以用來實現很多有用的功能;

Redis的主要缺點,就是數據庫容量受到物理內容的限制,不能用做海量數據的高性能讀寫,因此Redis適合的場景主要侷限在較小數據量的高性能操作和運算上

3、Redis支持的數據類型

String 、List 、 Set、 Sorted Set、 Hash

4、爲什麼Redis需要把所有數據放到內存中

  • 追求最快的數據讀取速度,如果直接磁盤讀取會非常慢
  • 爲了保證數據安全,也會異步方式將數據寫入磁盤
  • 可以設置Redis最大使用的內存,若達到內存限制後將不能繼續存取數據

5、Redis是單線程的麼?

Redis是單線程處理網絡指令請求,所以不需要考慮併發安全問題。
所有的網絡請求都是一個線程處理,但不代表所有模塊都是單線程。

6、Redis的持久化機制有哪些?區別是什麼?優缺點是什麼?

  • 1.RDB持久化:原理是將Redis在內存中的數據庫記錄定時dump到磁盤上的RDB持久化

  • 2.AOF(append only file)持久化:原理是將Redis的操作日誌以追加的方式寫入文件

區別:
RDB持久化的指在指定的時間間隔內將內存中的數據集快照寫入磁盤,實際操作過程是fork一個子進程,先將數據集寫入臨時文件,寫入成功後,再替換之前的文件,用二進制壓縮存儲

image.png

AOF持久化以日誌的形式記錄服務器所處理的每一個寫、刪除操作,查詢操作不會記錄,以文本的方式記錄,可以打開文件看到詳細的操作記錄

image.png

RDB 優點:

  • RDB是緊湊的二進制文件,比較合適備份,全量複製等場景
  • RDB恢復數據遠快於AOF

RDB缺點:

  • RDB無法實現實時或者秒級持久化
  • 新老版本無法兼容RDB格式

AOF優點:

  • 可以更好地保護數據不丟失
  • appen-only模式讀取性能比較高
  • 適合做災難性的誤刪除緊急恢復

AOF缺點:

  • 對於同一份文件,AOF文件要比RDB快照大
  • AOF開啓後,寫的QPS會有所影響,相對於RDB來說,寫QPS要下降
  • 數據庫恢復比較慢,不適合做冷備

7、Redis的緩存失效策略有哪幾種

  • 定時刪除策略
    在設置key的過期時間的同時,爲該key創建一個定時器,讓定時器在可以的過期時間來臨時,對可以進行刪除
    優點:保證內存儘快釋放
    缺點:如果key過多,刪除這些key會佔用很多CPU時間,而且每個key創建一個定時器,驗證影響性能
  • 惰性刪除策略
    key過期的時候不刪除,每次從數據庫獲取key的時候去檢查是否過期,若過期,則刪除,返回null

    優點:CPU佔用時間比較少
    缺點:如果key很長時間沒有被獲取,將不會被刪除,可能造成內存泄漏

  • 定期刪除策略
    每隔一段時間執行一次刪除(在redis.conf配置文件設置hz,1s刷新的頻率)過期key的操作

    優點:可以控制刪除操作的時長和頻率,來減少CPU時間佔用,可以避免惰性刪除時候內存泄漏的問題
    缺點:對內存友好方面,不如定時策略;對cpu友好方面,不如惰性策略

Redis一般採用惰性策略+定期策略兩個相結合

8、什麼是緩存命中率?提高緩存命中率的方法有哪些??

  • 命中:可以直接通過緩存獲取到需要的數據
  • 不命中:無法直接通過緩存獲取到想要的數據,需要再次查詢數據庫或者執行其他的操作,原因可能是由於緩存中根本不存在,或者緩存已經過期

命中率越高表示使用緩存作用越好,性能越高(響應時間越短,吞吐量越高),併發能力也越好。

重點關注訪問評率高且時效性相對低一些的業務數據上,利用預加載(預熱)、擴容、優化緩存麗都。更新緩存等手段來提高命中率


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章