1、簡述
數據類型也稱數據對象,包含字符串對象(string)、列表對象(list)、哈希對象(hash)、集合對象(set)、有序集合對象(zset)。
2、String數據類型命令
string 類型是redis最基礎的數據類型,為簡單key-value結構,並且value不限制類型,可以是數字,字符,圖片等序列化對象,value值最大不可超過512M。
string類型在使用中經常用作分布式session共享,計數器,驗證碼過期,基礎數據的緩存等。
在java編碼中使用都是使用封裝好的jar包,如spring redis,jedis等等,當封裝的方法名稱與命令行直接操作大同小異,下面展示命令行使用:
注:redis的命令無大小寫區分,但key值嚴格區分大小寫
參數:
- EX seconds ---- 設置過期時間為秒,例:EX 60
- PX milliseconds ---- 設置過期時間為毫秒,例:PX 1000
- NX ---- 只有當key值不存在時才設置
- XX ---- 只有當key值存在時才設置
3、list數據類型命令
list數據類型為key-value鍵值對結構,但是其value值的結構為list,類似java中的隊列;左側為表頭,右側為表尾;結構類似於java的Map<String,List<Object>>
list數據類型可以作為消息隊列使用,還可以作為排名等的緩存,也可以作為緩存分頁。
4、hash數據類型
hash表數據類型是key-value結構,但是key為String類型,而value的結構則是field-value結構;類似於java中的Map<Sring,Map<Stirng,Object>> 結構。
hash表數據結構中field-value 的最大存儲個數是 232 - 1 個;主要用途是作為key-value對象類型的緩存,在value中存儲這個對象,取用時便於還原對象。
5、set數據類型
set數據類型為無序集合數據類型,且數據不重復;
集合類型經常用戶存儲一些集合類型的數據,如微博的所有粉絲,標簽等數據;結構類似java中的HashSet。
6、zset數據類型
zset數據類型為有序集合類型,且集合內元素不重復;
有集合通常被用作排行榜等有時間順序或其他順序的緩存集和;類似於java中的hashTable
7、redis 操作相關命令
redis除了對五大數據類型的操作命令,還有一些系統命令,可以對這個數據庫進行操作,如刪除key,清空數據庫,手動持久化等。
注:redis內部命令還有很多,有些維護之類的命令再次不做介紹,如果用到,請參考redis官網。
8、總結
Redis的命令大體上可以分為兩種,一種可以稱為數據庫級命令,可以對任何鍵值操作,如:DEL、TYPE等,第7節說到的基本都是;另一種是針對五大數據類型操作的,以上幾節說道的基本都是。
(1)命令類型檢查
命令的執行之前,Reddis會先檢查輸入的key的類型是否正確,才會決定是否執行給定的命令,也就是命令與值類型是否匹配。
(2)多態命令
如前一章說過四種數據對象每種都有兩種編碼方式,但在本章使用的命令確是一個;Redis在執行命令之前,會判斷對象的編碼方式,然后再執行對應的命令,這就是命令的多狀態。
參考:
《Redis設計與實現》黃健宏著,網上對Redis的詳解等
此博客為筆者使用redis很久之后,參考網絡上各類文章總結性書寫,原創手打,如有錯誤歡迎指正。