面試被洗臉,發現對Redis的瞭解不夠深,只好來惡補一下,這篇只會先簡單介紹各個資料類型,command的部分會在之後的文章介紹
Key
在Redis內的Key是二進位安全的,任何可以轉換成binary的都可以做為key,例如純字串 “abc” 又或是JPG檔
針對Key有幾個建議的規則
- 不要太長,例如用1024字元作為一個key
- 不要太短,較短的key雖然可以節省一些空間,但是缺乏可讀性反而會造成其他問題,例如使用 a1 a2 a3 作為key
- 使用相同pattern的命名模式
- 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的文件,大略整理自己理解到的內容,若有錯誤還請麻煩糾正,感謝大家
Key
在Redis內的Key是二進位安全的,任何可以轉換成binary的都可以做為key,例如純字串 “abc” 又或是JPG檔
針對Key有幾個建議的規則
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執行後儲存的內容分別為
最後一個command “bitcount” 可以回傳值為1的數量,故這邊會得到3
Redis Docs
爬完Redis的文件,大略整理自己理解到的內容,若有錯誤還請麻煩糾正,感謝大家