1. 程式人生 > 實用技巧 >Redis string資料型別

Redis string資料型別

1. redis 資料儲存格式

· redis自身是一個Map,其中所有的資料都是採用key:value的形式儲存

· 資料型別指的是儲存的資料的型別,也就是value部分的型別,key部分永遠都是字串

· 儲存內容:通常使用字串,如果字串以整數的形式展示,可以作為數字操作使用

2. string資料型別的基本操作

set key value                       //新增/修改資料
get key                             //獲取資料
del key                             //刪除資料
mset key1 value1 key2 value2 ...    //新增/修改多個數據
mget key1 key2 ...                  //獲取多個數據
strlen key                          //獲取資料字元個數(字串長度)
append key value                    //追加資訊到原始資訊後部(如果原始資訊存在就追加,否則新建)

3. string型別資料的擴充套件操作

業務場景

大型企業級應用中,分表操作是基本操作,使用多張表儲存同類型資料,但是對應的主鍵id必須保證統一性,不能重複。

Orace資料庫具有sequence設定,可以解決該問題,但是MySQL資料庫並不具有類似的機制,那麼如何解決?

解決方案

· 設定數值資料增加指定範圍的值

incr key 
incrby key increment
incrbyfloat key increment

· 設定數值資料減少指定範圍的值

decr key 
decrby key increment

string作為數值操作

· string在redis內部儲存預設就是一個字串,當遇到增減類操作incr,decr時會轉成數值型進行計算。

· redis所有的操作都是原子性的,採用單執行緒處理所有業務,命令是一個一個執行的,因此無需考慮併發所帶來的影響。

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

Tips:

· redis用於控制資料庫表主鍵id,為資料庫表主鍵提供生成策略,保障資料庫表的主鍵唯一性

· 此方案適用於所有資料庫,且支援資料庫叢集

業務場景

“最強女生”啟動海選投票,只能通過微信投票,每個微訊號每4小時只能投1票。

電商商家開啟熱門商品推薦,熱門商品不能一直處於熱門期,每週商品熱門期維持3天,3天后自動取消熱門。

新聞網站會出現熱點新聞,熱點新聞最大的特徵是時效性,如何自動控制熱點新聞的時效性。

· 設定資料具有指定的生命週期

setex key seconds value 
psetex key milliseconds value 

Tips:

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

4. string 型別資料操作的注意事項

· 資料操作不成功的反饋與資料正常操作直接的差異

  (1)表示執行結果是否成功

    · (integer) 0 -> false 失敗

    · (integer) 1 -> true 成功

  (2)表示執行結果值

    · (integer) 3 -> 3

    · (integer) 1 -> 1

· 資料未獲取到

  (nil)等同於null

· 資料最大儲存量

  512MB

· 數值計算最大範圍

  2的63次方-1

5. string型別應用場景

業務場景

主頁高頻訪問資訊顯示控制,例如新浪微博大V主頁顯示粉絲數與微博數量
解決方案

· 在redis中為大V使用者設定使用者資訊,以使用者主鍵和屬性值作為key,後臺設定定時重新整理策略即可

eg:  user:id:0001:fans   -> 159357

eg:  user:id:0001:blogs -> 4682

eg:  user:id:0001:focuss -> 46

· 在redis中以json格式儲存大V使用者資訊,定時重新整理(也可以使用hash型別)

eg:  user:id:0001 ->{ id:0001, name:joseph, fans:159357, blogs:6164, focus:46 }

Tips:

· redis應用於各種結構型和非結構型高熱度資料訪問加速