redis面試題,求求你別再問我redis了

2021-09-16 13:31:43 字數 1645 閱讀 4666

室友有個大佬,一說redis就問我為什麼使用redis,redis單執行緒為什麼這麼快,redis…

redis的部分面試題,自己整理的,當然實際工作中使用的redis比較簡單,但是了解redis部分底層還是有必要的…

什麼是redis

redis 是乙個使用 c 語言寫成的,開源的基於記憶體的,單執行緒的高效能key-value資料庫,redis的值是可以支援多種資料結構的.

redis 的資料型別,以及每種資料型別的使用場景

redis支援五種資料型別:string(字串),hash(雜湊),list(列表),set(集合)及zset(sorted set:有序集合)。

string就是存—key-value可以是string,也可以是數字啥的

hash就相當於hashmap,但是是key–hashmap,就是key–> key,value適合儲存物件型別的.

list就相當於list key --list

set相當於hashset key–hashset也是通過hash表實現的

sorted set有序集合,不同的是每個元素都會關聯乙個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。

為什麼使用 redis

嗯,專案中使用redis主要用作快取資料庫,那為什麼使用redis呢?應該從兩個方面去回答:效能和併發.

效能:

對一些複雜的耗時的sql查詢,如果對實時性不是很高而且僅僅只是用作展示的話,就最好將執行的結果放入快取,這樣在重複請求下就可以重快取中去獲取,能夠很快響應.這樣避免重複多次執行複雜耗時的sql,減少了資料庫開銷.

併發如果做乙個秒殺系統的話,一下子有很多請求,如果直接對資料庫進行操作,資料庫可能會掛,可以使用redis做乙個緩衝.具體則需要根據實際場景使用…

單執行緒的 redis 為什麼這麼快

一般面試官會先問一句,redis是單執行緒還是多執行緒的,然後又問redis單執行緒(多程序,因為有執行緒執行資料備份)為什麼這麼快?回答主要圍繞以下三點回答:

什麼是redis持久化?redis有哪幾種持久化方式?優缺點是什麼?

持久化就是把記憶體資料寫到磁碟中去,防止服務宕機導致記憶體資料丟失。主要有兩種:rdb(預設) 和aof,4.0版本開始支援rdb和aof混用的方式來進行持久化 。

redis 有什麼優缺點

有點的話就是上面講的,豐富的型別,高效率的讀寫,支援持久化等等…

缺點的話,就相當於快取的缺點:

如果對資料有強一致性要求,不能放快取。我們所做的一切,只能保證最終一致性。首先,採取正確更新策略,先更新資料庫,再刪快取。其次,因為可能存在刪除快取失敗的問題,提供乙個補償措施即可,例如利用訊息佇列。

一般公司很難碰到這個問題,我公司資料量不大也沒碰到過,但是我們要了解是怎麼回事,如果碰到了該怎麼解決,

快取穿透,黑客故意去請求快取中不存在的資料,導致所有的請求都懟到資料庫上,從而資料庫連線異常。這個有幾種解決方案,主要就是限流問題,可以通過計數器、漏桶和令牌桶演算法。

redis面試題,求求你別再問我redis了

室友有個大佬,一說redis就問我為什麼使用redis,redis單執行緒為什麼這麼快,redis redis的部分面試題,自己整理的,當然實際工作中使用的redis比較簡單,但是了解redis部分底層還是有必要的 什麼是redis redis 是乙個使用 c 語言寫成的,開源的基於記憶體的,單執行...

Redis 求求你,別再問跳表了

跳表 skiplist 是乙個特殊的鍊錶,相比一般的鍊錶,有更高的查詢效率,可比擬二叉查詢樹,平均期望的查詢 插入 刪除時間複雜度都是o log n 許多知名的開源軟體 庫 中的資料 結構均採用了跳表這種資料結構 我們拿我們以前的有序鍊錶相比 我們可以很清楚的看出,有序鍊錶的查詢比較慢,時間複雜度為...

sql怎麼優化,求求你別再問我sql優化了

一般面試會問你,sql怎麼優化,這時候應該回答,主要就是避免全表掃瞄,一般寫sql的時候先通過explain命令對將要執行的sql語句進行分析一下,看看sql查詢有沒有走索引,有沒有全表掃瞄,如果沒有,先看看是否對對應的字段建立了索引,如果沒有則建立合適的索引,如果建立了還是全表掃瞄那就就對sql語...