一、基本介紹
前面乙個專題我們講到string去儲存明星微博粉絲數,微博數等,大概介紹了兩種方式:
第一種方式,相當於是兩個key,分別去儲存,第二種方式呢,取資料還可以,修改就顯得比較笨重。我們做一下變形,變成下面這種形式:相當於儲存空間變成了乙個鍵對應乙個值,外部只需要明星的id的key就好了。相當於乙個key儲存了多組資料,我們簡化下圖:
hash型別:
hash儲存結構優化
二、基本操作
功能命令
其他說明
新增修改資料
hset key field value
獲取資料
hget key field
hgetall key
如果是獲取所有的key,field和value都會得到,交叉展示
刪除資料
hdel key field
可以刪除多個field
新增修改多個資料
hmset key field1 value1 field2 value2
獲取多個資料
hmget key field1 field2
獲取雜湊表中字段的數量
hlen key
返回field個數
獲取雜湊表中是否存在指定字段
hexists key field
存在返回1,不存在返回0
三、擴充套件操作
功能命令
其他說明
獲取雜湊表中所有欄位名
hkeys key
得到所有的field
獲取雜湊表中所有字段值
hvals key
得到所有的value
設定指定欄位的數值資料增加指定範圍的值
hincrby key field incremet
hincrbyfloat key field increment
四、注意事項
五、業務場景
比方說電商中的購物車,每個使用者使用自己的購物車,購物車中購買多個商品,每個商品的數量也不盡相同,這個時候我們就可以考慮hash的儲存結構;key 就是使用者的id,field是商品的id,value就是購買對應商品的數量。
儲存結構ok了,那麼我們購物車的操作是不是也能實現了?當然可以的,比方說要獲取購物車中商品的個數可以使用hlen,獲取某個商品的購買數量hget,購買數量修改hset/hincrby,
看全部購物車hgetall,刪除hdel。因此用hash是沒有問題。
六、string儲存物件和hash儲存物件區別
string存物件講究整體性,要麼一次性更新,要麼一次性獲取,以讀為主;
hash可以用field把屬性隔離開來,講究的是更新操作的靈活性;hash是乙個群組概念,把一系列的資料報裝起來,對外產生唯一的key。
如果更新比較多,推薦使用hash,如果更加注重對外呈現,推薦string。
redis專題十六 redis的常見幾個解決方案
一 快取預熱 現象 伺服器啟動之後迅速宕機 分析 1 前期準備工作 2 準備工作 3 實施 二 快取雪崩 現象 系統平穩執行過程中,忽然資料庫連線量激增,應用伺服器無法及時處理請求,可能前端頁面也會崩潰,資料庫崩潰,緊接著應用伺服器崩潰,redis集群崩潰,即使重啟資料庫等之後再次瞬間被流程放倒。分...
Redis資料彙總專題
from 很多朋友反映,說nosqlfan上的資料 本篇為redis 部分的資料彙總。保持持續更新。使用redis bitmap進行活躍使用者統計 redis採用不同記憶體分配器碎片率對比 redis優化之網路延遲 redis 資料庫結構設計 使用redis的五個注意事項 利用redis構建高效的實...
Redis資料彙總專題
很多朋友反映,說nosqlfan上的資料 twemproxy twitter 開源的 redis proxy redis 常見的效能問題和解決方法 使用redis bitmap進行活躍使用者統計 redis採用不同記憶體分配器碎片率對比 redis如何處理客戶端連線 redis監控技巧 redis優...