眾所周知redis常用的資料型別有5種,但是可能不知道它們的底層基礎資料結構:
1.list(ziplist+linkedlist)
它是由壓縮列表+雙端鍊錶實現的列表物件
應用場景:
訊息佇列
資料分頁
2.string(int+embstr+raw)3.hash(ziplist+hashtable)
它是由壓縮列表+字典實現的雜湊(雜湊)物件
應用場景:
儲存物件(把使用者的資訊存到hash裡,以使用者id為key,使用者的詳細資訊為value)
4.set(intset+hashtable)
它是由整數集合+字典實現的集合物件
應用場景:
查詢元素是否存在,記錄不能重複的資料(註冊使用者名稱)
記錄做過的事情(投票系統)
5.zset(ziplist+skiplist)
它是由壓縮列表+字典+跳躍表實現的有序集合物件
應用場景:
計算權重
排行榜學藝不精,暫時想到這麼多,以後慢慢補充
面試常考資料結構與演算法
資料結構部分 1 陣列和鍊錶的區別。很簡單,但是很常考,記得要回答全面 c 語言中可以用陣列處理一組資料型別相同的資料,但不允許動態定義陣列的大小,即在使用陣列之前必須確定陣列的大小。而在實際應用中,使用者使用陣列之前無法確定陣列的大小,只能夠將陣列定義成足夠大小,這樣陣列的空間可能不被使用,從而造...
面試常考資料結構與演算法
資料結構部分 1 陣列和鍊錶的區別。很簡單,但是很常考,記得要回答全面 c 語言中可以用陣列處理一組資料型別相同的資料,但不允許動態定義陣列的大小,即在使用陣列之前必須確定陣列的大小。而在實際應用中,使用者使用陣列之前無法確定陣列的大小,只能夠將陣列定義成足夠大小,這樣陣列的空間可能不被使用,從而造...
面試常考資料結構與演算法
1 陣列和鍊錶的區別。很簡單,但是很常考,記得要回答全面 c 語言中可以用陣列處理一組資料型別相同的資料,但不允許動態定義陣列的大小,即在使用陣列之前必須確定陣列的大小。而在實際應用中,使用者使用陣列之前無法確定陣列的大小,只能夠將陣列定義成足夠大小,這樣陣列的空間可能不被使用,從而造成記憶體空間的...