【Redis】3. Redis数据类型 Hash
學習教程
https://www.bilibili.com/video/BV1CJ411m7Gc?p=12
Hash類型
存儲的困惑
 對象類數據的存儲如果具有較為頻繁的更新需求操作會顯得笨重
 
 hash類型
- 新的存儲需求:對一系列存儲的數據進行編組,方便管理,典型應用存儲對象信息
 - 需要的內存結構:一個存儲空間保存多少個鍵值對數據
 - hash類型:底層使用哈希表結構實現數據存儲
 
hash類型數據的基本操作
- 添加/修改數據
 
hset key field value
- 獲取數據
 
hget key field
 hgetall key
- 刪除數據
 
hdel key field1 [field2]
- 添加/修改多個數據
 
hmset key field1 value1 field2 calue2
- 獲取多個數據
 
hmget key field1 field2 …
- 獲取哈希表中字段的數量
 
hlen key
- 獲取哈希表中是否存在指定的字段
 
hexists key field
hash類型數據擴展操作
- 獲取哈希表中所有的字段名和字段值
 
hkeys key
 hvals key
- 設置指定字段的數值數據增加指定范圍的值
 
hincrby key field increment
 hincrbyfloat key field increment
hash類型數據操作的注意事項
- hash類型下的value只能存儲字符串,不允許存儲其他類型數據,不存在嵌套現象。如果數據未獲取到,對應的值為(nil)
 - 每個hash可以存儲232-1個鍵值對
 - hash類型十分貼近對象的數據存儲形式,并且可以靈活添加刪除對象屬性。但hash設計初中不是為了存儲大量對象而設計的,切記不可濫用,更不可以將hash作為對象列表使用
 - hgetall操作可以獲取全部屬性,如果內部fiekd過多,遍歷整體數據效率就會很低,有可能成為數據訪問瓶頸
 
hash類型應用場景購物車
 
 當前設計是否加速了購物車的呈現
 當前僅僅是將數據存儲到redis中,并沒有起到加速的所用,商品信息還需要二次查詢數據庫
-  
每條購物車中的商品記錄保存成兩條field
 -  
field1 專用于保存購買數量
1、命名格式:商品id:nums
2、保存數據:數值 -  
field2 專用于保存購物車中顯示的信息,包含文字描述,圖片地址,所屬商家信息等
1、命名格式:商品id:info
2、保存數據:json
可以看出來又具有了大量的信息重復,所以我們可以把field2的內容變成一個固定的獨立hash,后期均可從該公共域中拿出商品信息 -  
修改數據,如果其中有數據則操作不起作用,如果沒有則創(chuàng)建,實現檢測到公共域中已經拿出某商品信息的話,就不用再拿,避免每次都要從公共域中拿出重復的商品信息,影響效率
 
hsetnx key field value
Hash實現搶購
Hash應用場景
 
 解決方案
- 以商家id作為key
 - 將參與搶購的商品id作為field
 - 將參與搶購的商品數量作為對應的value
 - 搶購時使用降值的方式控制產品數量
 
業(yè)務場景
string存儲對象(json)和hash存儲對象前者側重整體的數據存儲讀取,后者把數據包裝成一個群組,對外提供一個key接口,對更新操作或者修改數量的操作更方便。
總結
以上是生活随笔為你收集整理的【Redis】3. Redis数据类型 Hash的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 【Redis】2. Redis数据类型
 - 下一篇: 【Redis】4.Redis数据存储li