標籤:資料類型 集合 散列 redis
Redis是一個開源的的KVStore for Redis或緩衝,它提供了豐富的資料類型。主要包括字串,散列,列表,集合和有序集合,不同的資料類型有不同的適用情境。本文對Redis各個資料類型做簡單的介紹以便新接觸redis的童鞋能夠儘快的熟悉和使用。
1.字串類型
定義該類型的資料能夠儲存任何形式的字串,甚至包括圖片,JSON對象等。但是儲存大小有一定的限制,如每個索引值最大為512M,但是這足以滿足絕大部分的應用。字串類型是Redis儲存的基本類型,從某種意義上來說其它集中資料類型也是對字串類型的組合。
簡單的用戶端使用命令如:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/54/1F/wKioL1R4ivzw4d5zAAIrKnAjmlY768.jpg" title="string.png" alt="wKioL1R4ivzw4d5zAAIrKnAjmlY768.jpg" />
2.HASH類型
散列類型類似於字典的結構,適合儲存某一實體的具體屬性。如book,有作者、出版社、出版日期等資訊。實際上其儲存的是欄位和相應值的映射。
簡單使用如:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/54/1F/wKioL1R4iyjw0SM5AAKtViLtTRM907.jpg" title="hash.png" alt="wKioL1R4iyjw0SM5AAKtViLtTRM907.jpg" />
3.清單類型
清單類型實際上儲存的是一個有序的字串列表,這與下面的集合類型對應。常用的列表操作就是在兩端添加元素,或者獲得列表中某一段的資料。列表實際上是使用雙向鏈表來實現的,所以在表兩端添加元素是很快的。但是當查列表中間的某些元素時,效率並不太高。
列表的簡單用法如下:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/54/20/wKiom1R4itiwd5bpAAFGcMYVGTo387.jpg" title="LIST.jpg" alt="wKiom1R4itiwd5bpAAFGcMYVGTo387.jpg" />
其實列表的使用情境還是比較廣的,如隊列的實現,日誌的儲存等,中可以利用LPUSH和LPOP實現棧的應用,利用LPUSH和RPOP實現隊列的用法(LRANGE命令顯示列表中的資料,0和-1分別代表左右邊界)。
4.集合類型
這裡的集合實際上類似於數學中的集合,常用與判斷某元素是否存在,如微博中好友關係的緩衝。集合在Redis內部是使用值為空白的散列表實現的。所以這些操作的時間複雜度為O(1)。使用集合可以方便的做集合運算,如交並差等,例如微博中可以輕易的顯示出兩個帳號的共同好友。
簡單的集合命令使用如下:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/54/20/wKiom1R4i46xowcFAAG9tV6c9uk308.jpg" style="float:none;" title="SET1.jpg" alt="wKiom1R4i46xowcFAAG9tV6c9uk308.jpg" />
也可以將2個集合的運算結果存到另一個集合類型中:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/54/20/wKiom1R4i5SjpseiAACcKb_N98U112.jpg" style="float:none;" title="SET2.jpg" alt="wKiom1R4i5SjpseiAACcKb_N98U112.jpg" />
5.有序集合類型
在集合類型上,有序集合為集合中的每個元素都關聯一個分數。可以基於分數對有序集合值進行範圍內擷取,排序等操作。具體使用方式如下:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/54/1F/wKioL1R4jMDD7Q_-AADVRHt8nQE775.jpg" title="ZSET.jpg" alt="wKioL1R4jMDD7Q_-AADVRHt8nQE775.jpg" />
6.應用情境
筆者供職於一家遊戲公司,就目前的應用來看,Redis被廣泛的應用在資料的緩衝上。基本上是配置MySQL或者MongoDB作為DB層的資料存放區使用。簡單的分析下其各個類型的應用情境。
字串:一般用於帳號的映射。
散列:主要使用者帳號角色資訊及其附屬的裝備道具的儲存。
列表:隊列的應用,DB資料的緩寫等
集合:使用者單屬性記錄如好友等資訊
有序集合:如全域排行等
到期時間:常用於定期活動禮包的發放
關於Redis的資料類型就先介紹到這兒,後續將進一步介紹Redis的進階特性。
本文出自 “Haris” 部落格,謝絕轉載!
Redis資料類型簡介