redis專題三 redis的資料型別之hash

2022-07-25 08:06:06 字數 1656 閱讀 3844

一、基本介紹

前面乙個專題我們講到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優...