天天看點

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

1. Redis 中5種資料類型

Redis是一種基于鍵值對的NoSQL資料庫,它的值主要由string(字元串),hash(哈希),list(清單),set(集合),zset(有序集合)五種基本資料結構構成,除此之外還支援一些其他的資料結構和算法。key都是由字元串構成的。

 string String

 hash HashMap

 list LinkedList

 set HashSet

 sorted_set TreeSet

2.String 類型

字元串類型是Redis最基礎的資料結構,字元串類型可以是JSON、XML甚至是二進制的圖檔等資料,但是最大值不能超過512MB。

2.1 内部編碼

Redis會根據目前值的類型和長度決定使用哪種内部編碼來實作。

字元串類型的内部編碼有3種:

int:8個位元組的長整型。

embstr:小于等于39個位元組的字元串。

raw:大于39個位元組的字元串。

  • redis 自身是一個 Map,其中所有的資料都是采用 key : value 的形式存儲
  • 資料類型指的是存儲的資料的類型,也就是 value 部分的類型,key 部分永遠都是字元串
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

2.1String 類型

  • 存儲的資料:單個資料,最簡單的資料存儲類型,也是最常用的資料存儲類型
  • 存儲資料的格式:一個存儲空間儲存一個資料
  • 存儲内容:通常使用字元串,如果字元串以整數的形式展示,可以作為數字操作使用
    Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

2.2 string 類型資料的基本操作

  • 添加/修改資料

    set key value

  • 擷取資料

    get key

  • 删除資料

    del key

  • 添加/修改多個資料

    mset key1 value1 key2 value2 …

  • 擷取多個資料

    mget key1 key2 …

  • 擷取資料字元個數(字元串長度)

    strlen key

  • 追加資訊到原始資訊後部(如果原始資訊存在就追加,否則建立)

    append key value

Multiple[ˈmʌltɪpl]

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

其實很好了解:我們同時操作的指令很多的時候 可以使用多指令進行操作,如果同時操作的指令不是很多單指令和多指令的差別不是很大

2.3 string 類型資料的擴充操作

設定數值資料增加指定範圍的值
incr key
incrby key increment
incrbyfloat key increment

設定數值資料減少指定範圍的值
decr key
decrby key increment
           
  • string在redis内部存儲預設就是一個字元串,當遇到增減類操作incr,decr時會轉成數值型進行計算。
  • redis所有的操作都是原子性的,采用單線程處理所有業務,指令是一個一個執行的,是以無需考慮并發

    帶來的資料影響。

  • 注意:按數值進行操作的資料,如果原始資料不能轉成數值,或超越了redis 數值上限範圍,将報錯。

    9223372036854775807(java中long型資料最大值,Long.MAX_VALUE)

Tips 1:

  • redis用于控制資料庫表主鍵id,為資料庫表主鍵提供生成政策,保障資料庫表的主鍵唯一性
  • 此方案适用于所有資料庫,且支援資料庫叢集
設定資料具有指定的生命周期
解決方案
setex key seconds value
psetex key milliseconds value

redis 控制資料的生命周期,
通過資料是否失效控制業務行為,
适用于所有具有時效性限定控制的操作
           

string 類型資料操作的注意事項

資料操作不成功的回報與資料正常操作之間的差異

① 表示運作結果是否成功

 (integer) 0 → false 失敗

 (integer) 1 → true 成功

② 表示運作結果值

 (integer) 3 → 3 3個

 (integer) 1 → 1 1個

 資料未擷取到

(nil)等同于null

 資料最大存儲量

512MB

 數值計算最大範圍(java中的long的最大值)

9223372036854775807

2.4 使用場景

1.2.1 緩存

在web服務中,使用MySQL作為資料庫,Redis作為緩存。由于Redis具有支撐高并發的特性,通常能起到加速讀寫和降低後端壓力的作用。web端的大多數請求都是從Redis中擷取的資料,如果Redis中沒有需要的資料,則會從MySQL中去擷取,并将擷取到的資料寫入redis。

1.2.2 計數

Redis中有一個字元串相關的指令incr key,incr指令對值做自增操作,傳回結果分為以下三種情況:

值不是整數,傳回錯誤

值是整數,傳回自增後的結果

key不存在,預設鍵為0,傳回1

比如文章的閱讀量,視訊的播放量等等都會使用redis來計數,每播放一次,對應的播放量就會加1,同時将這些資料異步存儲到資料庫中達到持久化的目的。

1.2.3 共享Session

在分布式系統中,使用者的每次請求會通路到不同的伺服器,這就會導緻session不同步的問題,假如一個用來擷取使用者資訊的請求落在A伺服器上,擷取到使用者資訊後存入session。下一個請求落在B伺服器上,想要從session中擷取使用者資訊就不能正常擷取了,因為使用者資訊的session在伺服器A上,為了解決這個問題,使用redis集中管理這些session,将session存入redis,使用的時候直接從redis中擷取就可以了。

1.2.4 限速

為了安全考慮,有些網站會對IP進行限制,限制同一IP在一定時間内通路次數不能超過n次。

業務場景

首頁高頻通路資訊顯示控制,例如新浪微網誌大V首頁顯示粉絲數與微網誌數量

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

3 Hash 類型

3.0 内部編碼

哈希類型的内部編碼有兩種:

ziplist(壓縮清單):當哈希類型元素個數小于hash-max-ziplist-entries配置(預設512個)同時所有值都小于hash-max-ziplist-value配置(預設64位元組)時使用。ziplist使用更加緊湊的結構實作多個元素的連續存儲,是以比hashtable更加節省記憶體。

hashtable(哈希表):當ziplist不能滿足要求時,會使用hashtable。

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

3.1 hash 類型資料的基本操作

添加/修改資料

hset key field value
           

 擷取資料

hget key field
hgetall key
           

 删除資料

添加/修改多個資料

hmset key field1 value1 field2 value2 … 
           

擷取多個資料

hmget key field1 field2 … 
           

 擷取哈希表中字段的數量

hlen key
           

 擷取哈希表中是否存在指定的字段

hexists key field
           

3.2 hash 類型資料擴充操作

擷取哈希表中所有的字段名或字段值

hkeys key
hvals key
           

 設定指定字段的數值資料增加指定範圍的值

hincrby key field increment
hincrbyfloat key field increment
           

hash 類型資料操作的注意事項

  • hash類型下的value隻能存儲字元串,不允許存儲其他資料類型,不存在嵌套現象。如果資料未擷取到,對應的值為(nil)
  • 每個 hash 可以存儲 2的32次方 - 1 個鍵值對
  • hash類型十分貼近對象的資料存儲形式,并且可以靈活添加删除對象屬性。但hash設計初衷不是為了存儲大量對象而設計的,切記不可濫用,更不可以将hash作為對象清單使用
  • hgetall 操作可以擷取全部屬性,如果内部field過多,周遊整體資料效率就很會低,有可能成為資料通路瓶頸
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

4 清單 List

清單類型用來存儲多個有序的字元串,一個清單最多可以存儲2^32-1個元素,清單的兩端都可以插入和彈出元素。

4.1 内部編碼

清單的内部編碼有兩種:

ziplist(壓縮清單):當哈希類型元素個數小于list-max-ziplist-entries配置(預設512個)同時所有值都小于list-max-ziplist-value配置(預設64位元組)時使用。ziplist使用更加緊湊的結構實作多個元素的連續存儲,是以比hashtable更加節省記憶體。

linkedlist(連結清單):當ziplist不能滿足要求時,會使用linkedlist。

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

4.2 list 類型資料基本操作

添加/修改資料

lpush key value1 [value2] ……
rpush key value1 [value2] ……
           

 擷取資料

lrange key start stop
lindex key index
llen key 
           

 擷取并移除資料

lpop key
rpop key
           

4.3 list 類型資料擴充操作

規定時間内擷取并移除資料

blpop key1 [key2] timeout
brpop key1 [key2] timeout
brpoplpush source destination timeout
           

b是block 阻塞的意思

brpoplpush 表示從一個List擷取移除到另外一個list裡面

移除指定資料

lrem key count value
           

Tips 6:

 redis 應用于具有操作先後順序的資料控制

list 類型資料操作注意事項

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

4.3 使用場景

4.3.1 消息隊列

清單用來存儲多個有序的字元串,既然是有序的,那麼就滿足消息隊列的特點。使用lpush+rpop或者rpush+lpop實作消息隊列。除此之外,redis支援阻塞操作,在彈出元素的時候使用阻塞指令來實作阻塞隊列。

4.3.2 棧

由于清單存儲的是有序字元串,滿足隊列的特點,也就能滿足棧先進後出的特點,使用lpush+lpop或者rpush+rpop實作棧。

4.3.3 文章清單

因為清單的元素不但是有序的,而且還支援按照索引範圍擷取元素。是以我們可以使用指令lrange key 0 9分頁擷取文章清單

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

從中間移除元素可以使用 lrem 指令

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

5.集合 Set

集合類型也可以儲存多個字元串元素,與清單不同的是,集合中不允許有重複元素并且集合中的元素是無序的。一個集合最多可以存儲2^32-1個元素。

5.1 内部編碼

集合類型的内部編碼有兩種:

intset(整數集合):當集合中的元素都是整數且元素個數小于set-max-intset-entries配置(預設512個)時,redis會選用intset來作為集合的内部實作,進而減少記憶體的使用。

hashtable(哈希表):當intset不能滿足要求時,會使用hashtable。

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

5.2 set 類型資料的基本操作

添加資料

sadd key member1 [member2]

擷取全部資料

smembers key

删除資料

srem key member1 [member2]

擷取集合資料總量

scard key

判斷集合中是否包含指定資料

sismember key member

5.3 set 類型資料的擴充操作

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

随機擷取集合中指定數量的資料

srandmember key [count]

随機擷取集合中的某個資料并将該資料移出集合

spop key [count]

Tips 8:

 redis 應用于随機推薦類資訊檢索,例如熱點歌單推薦,熱點新聞推薦,熱賣旅遊線路,應用APP推薦,大V推薦等

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

求兩個集合的交、并、差集

sinter key1 [key2]
sunion key1 [key2]
sdiff key1 [key2]
           

求兩個集合的交、并、差集并存儲到指定集合中

sinterstore destination key1 [key2]
sunionstore destination key1 [key2]
sdiffstore destination key1 [key2] 
           

将指定資料從原始集合中移動到目标集合中

smove source destination member 
           
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

set 類型資料操作的注意事項

 set 類型不允許資料重複,如果添加的資料在 set 中已經存在,将隻保留一份

 set 雖然與hash的存儲結構相同,但是無法啟用hash中存儲值的空間

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

5.4 使用場景

5.4.1 使用者标簽

例如一個使用者對籃球、足球感興趣,另一個使用者對橄榄球、乒乓球感興趣,這些興趣點就是一個标簽。有了這些資料就可以得到喜歡同一個标簽的人,以及使用者的共同感興趣的标簽。給使用者打标簽的時候需要①給使用者打标簽,②給标簽加使用者,需要給這兩個操作增加事務。

給使用者打标簽

sadd user:1:tags tag1 tag2

給标簽添加使用者

sadd tag1:users user:1

sadd tag2:users user:1

使用交集(sinter)求兩個user的共同标簽

sinter user:1:tags user:2:tags

5.4.2 抽獎功能

集合有兩個指令支援擷取随機數,分别是:

随機擷取count個元素,集合元素個數不變

随機彈出count個元素,元素從集合彈出,集合元素個數改變

使用者點選抽獎按鈕,參數抽獎,将使用者編号放入集合,然後抽獎,分别抽一等獎、二等獎,如果已經抽中一等獎的使用者不能參數抽二等獎則使用spop,反之使用srandmember。

6 sorted_set 有序集合

有序集合和集合一樣,不能有重複元素。但是可以排序,它給每個元素設定一個score作為排序的依據。最多可以存儲2^32-1個元素。

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

6.1 内部編碼

有序集合類型的内部編碼有兩種:

ziplist(壓縮清單):當有序集合的元素個數小于list-max-ziplist-entries配置(預設128個)同時所有值都小于list-max-ziplist-value配置(預設64位元組)時使用。ziplist使用更加緊湊的結構實作多個元素的連續存儲,更加節省記憶體。

skiplist(跳躍表):當不滿足ziplist的要求時,會使用skiplist。

6.2 sorted_set 類型資料的基本操作

  • 添加資料

    zadd key score1 member1 [score2 member2]

  • 擷取全部資料

    zrange key start stop [WITHSCORES]

    zrevrange key start stop [WITHSCORES]

  • 删除資料

    zrem key member [member …]

  • 按條件擷取資料

    zrangebyscore key min max [WITHSCORES] [LIMIT]

    zrevrangebyscore key max min [WITHSCORES]

  • 條件删除資料

    zremrangebyrank key start stop

    zremrangebyscore key min max

    注意:

     min與max用于限定搜尋查詢的條件

     start與stop用于限定查詢範圍,作用于索引,表示開始和結束索引

     offset與count用于限定查詢範圍,作用于查詢結果,表示開始位置和資料總量

  • 擷取集合資料總量

    zcard key

    zcount key min max

  • 集合交、并操作

    zinterstore destination numkeys key [key …]

    zunionstore destination numkeys key [key …]

6.3 sorted_set 類型資料的擴充操作

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
  • 擷取資料對應的索引(排名)

    zrank key member

    zrevrank key member

  • score值擷取與修改

    zscore key member

    zincrby key increment member

    Tips 13:  redis 應用于計數器組合排序功能對應的排名

sorted_set 類型資料操作的注意事項

  • score儲存的資料存儲空間是64位,如果是整數範圍是-9007199254740992~9007199254740992
  • score儲存的資料也可以是一個雙精度的double值,基于雙精度浮點數的特征,可能會丢失精度,使用時候要慎重
  • sorted_set 底層存儲還是基于set結構的,是以資料不能重複,如果重複添加相同的資料,score值将被反複覆寫,保留最後一次修改的結果
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

6.4 使用場景

6.4.1 排行榜

使用者釋出了n篇文章,其他人看到文章後給喜歡的文章點贊,使用score來記錄點贊數,有序集合會根據score排行。流程如下

使用者釋出一篇文章,初始點贊數為0,即score為0

zadd user:article 0 a

有人給文章a點贊,遞增1

zincrby user:article 1 a

查詢點贊前三篇文章

zrevrangebyscore user:article 0 2

查詢點贊後三篇文章

zrangebyscore user:article 0 2

6.4.2 延遲消息隊列

下單系統,下單後需要在15分鐘内進行支付,如果15分鐘未支付則自動取消訂單。将下單後的十五分鐘後時間作為score,訂單作為value存入redis,消費者輪詢去消費,如果消費的大于等于這筆記錄的score,則将這筆記錄移除隊列,取消訂單。

7. 資料類型實踐案例

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結
Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結

8 五種資料類型總結

Redis五中資料類型和應用場景分析1. Redis 中5種資料類型2.String 類型3 Hash 類型4 清單 List5.集合 Set6 sorted_set 有序集合7. 資料類型實踐案例8 五種資料類型總結