redis常用數據類型之hash


redis數據類型之hash

解決問題:存儲的困惑

前面了解的對象類數據存儲,如果具有比較頻繁的更新操作會顯得很笨重

hash類型

  • 新點存儲需求:對一系列存儲的數據進行編組,方便管理,典型應用存儲對象信息

  • 需要的存儲結構:一個存儲空間保存多個鍵值對數據

  • hash存儲結構優化

    • 如果field數量比較少,保存結構優化為類數組結構

    • 如果field數量比較多,存儲結構使用hashMap結構

  • hash類型數據操作的注意事項

    • hash類型下的value只能存儲字符串,不允許存儲其他數據類型,不存在嵌套現象

    • 每個hash可以存儲2的32次方-1個鍵值對

    • hash類型十分貼近對象 數據存儲形式,並且樂意靈活添加刪除對象屬性

    • hgetall操作可以獲取全部屬性,如果內部field過多,遍歷整體的效率會很低,有可能成為數據訪問瓶頸

  • hash類型數據的基本操作

    • 添加 hset field value

    • 獲取數據 hget key field/hgetall key

    • 刪除數據 hdel key field1 [field2]

    • 添加/修改多個數據 hmset key field1 value1 field2 value2

    • 獲取多個數據 hmget key field1 field2-----

    • 獲取哈希表中字段的數量hlen key

    • 獲取哈希表中是否存在指定的字段hexists key field

    • 獲取哈希表中所有的字段名或字段值hkeys key/hvals key

    • 設定指定字段的數值數據增加指定范圍的值hincrby key field increment hincrbyfloat key field increment

    • hsetnx判斷字段是否有值,如果沒有就加進去,否則原始值不變

  • hash使用場景

    • 電商網站購物車設計與實現

      • 業務分析

        • 僅分析購物車的redis存儲模型

          • 添加、瀏覽、更改數量、刪除、清空

      • 解決方案

        • 以客戶id作為key,每位客戶創建一個hasn存儲結構存儲對應的購物出信息

        • 將商品編號作為field,購買數量作為value進行存儲

        • 添加商品:追加全新的field和value

        • 瀏覽:遍歷hash

        • 更改數量:自增自減,設置value值

        • 刪除商品:刪除field

        • 清空:刪除key

      • 注意以上方案並沒有加速購物車的呈現,僅僅是將數據存儲到了redis中,並沒有起到加速的作用,商品信息還需要二次查詢數據庫

        • 解決辦法

          • 每條購物車中的商品記錄保存成兩條field

          • field1專門用於保存購買數量

            • 命名格式:商品id:nums

            • 保存數據:數值

          • field2專門用於保存購物車中顯示的信息,包含文字、圖片地址、所屬商家信息等

            • 命名格式:商品格式:商品id:info

            • 保存數據:json

    • 雙11搶購,銷售手機充值卡的商家對移動、聯通、電信的30、50、100元商品推出搶購活動,每種商品搶購上限1000張

      • 解決方案

        • 以商家id作為key

        • 將參與搶購的商品id作為field

        • 將參與搶購的商品數量作為對應的value

        • 搶購時使用將值的方式控制產品數量

      • 總結:redis應用於搶購、限購類、限量發放優惠券、激活碼等業務的數據存儲設計 

    以上就是hash入門的東西,包括基本命令,使用場景,具體案例,如果想要實現就在客戶端進行驗證就可以,步驟還是相對比較全的 

     

     

     

     

     

     

     

     

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM