1. 程式人生 > 實用技巧 >看完這20道Redis面試題後,螞蟻金服面試可以約起來了?

看完這20道Redis面試題後,螞蟻金服面試可以約起來了?

1、什麼是Redis,Redis有哪些特點?

Redis全稱為:Remote Dictionary Server(遠端資料服務),Redis是一種支援key-value等多種資料結構的儲存系統。可用於快取,事件釋出或訂閱,高速佇列等場景。支援網路,提供字串,雜湊,列表,佇列,集合結構直接存取,基於記憶體,可持久化。

特點1:豐富的資料型別

我們知道很多資料庫只能處理一種資料結構:

  • 傳統SQL資料庫處理二維關係資料;

  • MemCached資料庫,鍵和值都是字串;

  • 文件資料庫(MongoDB)是由Json/Bson組成的文件。

當然不是他們這些資料庫不好,而是一旦資料庫提供資料結構不適合去做某件事情的話,程式寫起來就非常麻煩和不自然。

Redis雖然也是鍵值對資料庫,但是和Memcached不同的是:Redis的值不僅可以是字串,它還可以是其他五中資料機構中的任意一種。通過選用不同的資料結構,使用者可以使用Redis解決各種各樣的問題,使用Redis,你碰到一個問題,首先會想到是選用那種資料結構把哪些功能問題解決掉,有了多樣的資料結構,方便你解決問題。

特點2:記憶體儲存

資料庫有兩種:一種是硬碟資料庫,一種是記憶體資料庫。

硬碟資料庫是把值儲存在硬碟上,在記憶體中就儲存一下索引,當硬碟資料庫想訪問硬碟的值時,它先在記憶體裡找到索引,然後再找值。問題在於,在讀取和寫入硬碟的時候,如果讀寫比較多的時候,它會把硬碟的IO功能堵死。

記憶體儲存是講所有的資料都儲存在記憶體裡面,資料讀取和寫入速度非常快。

特點3:持久化功能

將資料儲存在記憶體裡面的資料儲存到硬碟中,保證資料安全,方便進行資料備份和恢復。

2、Redis有哪些資料結構?

Redis是key-value資料庫,key的型別只能是String,但是value的資料型別就比較豐富了,主要包括五種:

  • String

  • Hash

  • List

  • Set

  • Sorted Set

(1)String字串

SET KEY_NAME VALUE

string型別是二進位制安全的。意思是redis的string可以包含任何資料。比如jpg圖片或者序列化的物件。 string型別是Redis最基本的資料型別,一個鍵最大能儲存512MB。

(2)Hash雜湊

HSET KEY_NAME FIELD VALUE

Redis hash 是一個鍵值(key=>value)對集合。 Redis hash是一個string型別的field和value的對映表,hash特別適合用於儲存物件。

(3)List列表

//在 key 對應 list 的頭部新增字串元素
LPUSH KEY_NAME VALUE1.. VALUEN
//在 key 對應 list 的尾部新增字串元素
RPUSH KEY_NAME VALUE1..VALUEN
//對應 list 中刪除 count 個和 value 相同的元素
LREM KEY_NAME COUNT VALUE
//返回 key 對應 list 的長度
LLEN KEY_NAME

Redis 列表是簡單的字串列表,按照插入順序排序。 可以新增一個元素到列表的頭部(左邊)或者尾部(右邊)

(4)Set集合

SADD KEY_NAME VALUE1...VALUEn

Redis的Set是string型別的無序集合。 集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是O(1)。

(5)Sorted Set有序集合

ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN

Redis zset 和 set 一樣也是string型別元素的集合,且不允許重複的成員。 不同的是每個元素都會關聯一個double型別的分數。

redis正是通過分數來為集合中的成員進行從小到大的排序。

zset的成員是唯一的,但分數(score)卻可以重複。

3、一個字串型別的值能儲存最大容量是多少?

查詢官方文件(https://redis.io/topics/data-types)可以看到String型別的value值最多支援的長度為512M,所以正確的答案是512M。










作者:程式設計師追風
連結:https://www.jianshu.com/p/c7c352cb14fe
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。