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應用於各種結構型和非結構型高熱度資料訪問加速