[Redis] 淺談Redis內的幾種資料類型

面試被洗臉,發現對Redis的瞭解不夠深,只好來惡補一下,這篇只會先簡單介紹各個資料類型,command的部分會在之後的文章介紹

Key

在Redis內的Key是二進位安全的,任何可以轉換成binary的都可以做為key,例如純字串 “abc” 又或是JPG檔

針對Key有幾個建議的規則

  1. 不要太長,例如用1024字元作為一個key
  2. 不要太短,較短的key雖然可以節省一些空間,但是缺乏可讀性反而會造成其他問題,例如使用 a1 a2 a3 作為key
  3. 使用相同pattern的命名模式
  4. key最大的大小為512MB

1. String

在redis中最簡單的類型,就是儲存一個字串,同樣的值的大小限制為512MB,儲存結果會是 key-value 一對一的對應

2. List

基本上就是值為String的Linked lists,沒有順序,允許重複,在操作上可以選擇從前面取得資料或是從後面取得資料

3. Set

沒有排序的string集合,且不允許重複,內部是透過Hash Table實現,故新增、刪除、查詢的複雜度都是O(1)

4. Sorted Set

與set相似,但再新增時多了一個 “score” 需要指定,sorted set 會依據每一筆資料的score來做排序

5. Hash

Hash的使用有點像是在操作物件,新增一筆資料(hash),並且可以為他加入多個屬性(property)

6. BitMap

對string的另一種操作,set時有兩個參數,第一個為bit number,類似於在二進位中指定的2的平方數,第二個參數則是值,BitMap的優點在可以有較小的儲存空間

以下圖為例,command執行後儲存的內容分別為

> 1
> 11
> 011
> 1011

最後一個command “bitcount” 可以回傳值為1的數量,故這邊會得到3


Redis Docs

爬完Redis的文件,大略整理自己理解到的內容,若有錯誤還請麻煩糾正,感謝大家