redis常用的數(shù)據(jù)結(jié)構(gòu)有
- string
- list
- set
- zset
- hash
string
string 是 Redis 的基本的數(shù)據(jù)類型,一個(gè) key 對應(yīng)一個(gè) value。string 類型是二進(jìn)制安全的,Redis的string可以包含任何數(shù)據(jù),比如圖片或者序列化的對象,一個(gè)redis中字符串value最多可以是512M。
value可以存儲json格式,數(shù)值型等。
使用場景
string使用場景一般是存儲簡單的鍵值類型。比如用戶信息,登錄信息,配置信息等。還有一種用得比較多的是string的incr/decr操作,即自增、自減操作。調(diào)用它是原子性的,無論調(diào)用多少次,都一一計(jì)算成功。例如需要增減庫存的操作。
盡管string的value可以存儲很大,甚至500多MB的容量。但是在性能上來說,我們見諒存儲value的值不要超過1M。
hash
hash是一個(gè)鍵值對集合,是一個(gè)string類型的key和value的映射表,key還是key,但是value是一個(gè)鍵值對(key-value)。類比于JAVA里面的 Map<String, Map<String, Object>>集合。
使用場景
比如需要有兩層key的應(yīng)用常見,通過刪除一個(gè)key可以刪除所有內(nèi)容。例如一個(gè)商品有很多規(guī)格,規(guī)格里面有不同的值。
需要注意的是,經(jīng)過測試,在性能上來說一般hash里面的第二層key,不要超過200個(gè)為佳。盡管hash里面的key-value能達(dá)到500多MB的存儲容量。
list
list列表,它是簡單的字符串列表,按照插入順序排序,可以添加一個(gè)元素到列表的頭(左邊)或者尾部(右邊),它的底層實(shí)際上是個(gè)鏈表。
使用場景
list可以使用左推、左拉、右推、右拉的方式。所以你可以使用list作為集合存儲,比如存儲某寶商鋪里面的所有商品。
也可以用作輕量級別的隊(duì)列來使用。左推左拉、右推右拉。
需要注意的是盡管redis可以使用推拉的隊(duì)列模式,但是一定要注意場景。因?yàn)閞edis的隊(duì)列是一種輕量級別的,沒有隊(duì)列重試、隊(duì)列重放機(jī)制。消費(fèi)完隊(duì)列消息在redis代表已經(jīng)刪除了。
set
Redis的set是string類型的無序集合。
使用場景
如保存一些標(biāo)簽的名字。標(biāo)簽的名字不可以重復(fù),順序是可以無序的。
需要注意的是使用set一定不要存儲大量的數(shù)據(jù)。value的值不宜過大,并且集合數(shù)量不宜過大。幾百個(gè)集合的值,value不超過1MB為佳。
zset
zset(sorted set有序集合),和上面的set數(shù)據(jù)類型一樣,也是string類型元素的集合,但是它是有序的。
使用場景
sortset的使用場景一般是排行榜之類的場景