Redis核心數(shù)據(jù)結(jié)構(gòu) - hash

常用操作

HSET key field value ???// 存儲(chǔ)一個(gè)哈希表key的鍵值
HMSET key field value [filed value...] ???// 在一個(gè)哈希表key中存儲(chǔ)多個(gè)鍵值對(duì)
HGET key field ???// 獲取哈希表key對(duì)應(yīng)的field鍵值
MHGET key [key...] ???// 批量獲取哈希表key中多個(gè)field鍵值
HDEL key [key...] ???// 刪除哈希表key中的field鍵值
HLEN key ???// 返回哈希表key中 field的數(shù)量
HSETNX key field value ???// 存儲(chǔ)一個(gè)不存在的哈希表key的鍵值
HGETALL key ???// 返回哈希表key中所有的鍵值
HINCRBY key field increment ???// 為哈希表key中field鍵的值加上增量increment

應(yīng)用場(chǎng)景

  • 對(duì)象緩存
    HMSET ? user:1 ? name kyo ? balance 100
    HMGET ? user:1 ? name ? balance

  • 電商購(gòu)物車

  1. 以用戶id為key
  2. 商品id為field
  3. 商品數(shù)量為value
    添加商品:hset ? cart:1 ? 10001 ? 1
    增加數(shù)量:hincrby ? cart:1 ? 10001 ? 1
    商品總數(shù):hlen ? cart:1
    刪除商品:hdel ? cart:1 ? 10001
    獲取購(gòu)物車所有商品:hgetall ? cart:1
  • 游戲中存儲(chǔ)活躍用戶模塊數(shù)據(jù)
  1. 以用戶id為key
  2. 模塊數(shù)據(jù)名字為field
  3. 模塊數(shù)據(jù)值為value
    假設(shè)單個(gè)玩家所有模塊數(shù)據(jù)大小為200k,那么Redis開(kāi)辟40m,用來(lái)緩存最近200個(gè)活躍玩家數(shù)據(jù),在線玩家數(shù)據(jù)修改后,定時(shí)回寫到數(shù)據(jù)庫(kù)和redis,對(duì)于頻繁上下線的游戲可以減少上線時(shí)對(duì)數(shù)據(jù)庫(kù)的讀取壓力
    保存有修改的玩家數(shù)據(jù):hmset ? user:1 mod1 value1 ? mod2 vlaue2
    上線獲取玩家模塊數(shù)據(jù):hgetall ? user:1
    可以結(jié)合玩家上線頻率適當(dāng)對(duì)key加上超時(shí),因?yàn)閱蝹€(gè)玩家數(shù)據(jù)都聚合到一個(gè)key,淘汰時(shí)會(huì)整體換出,再次讀取不存在的key時(shí)再到數(shù)據(jù)庫(kù)加載即可,方便管理。

hash結(jié)構(gòu)優(yōu)點(diǎn)

  • 同類數(shù)據(jù)歸類整合存儲(chǔ),方便數(shù)據(jù)管理
  • 相比string存儲(chǔ)更節(jié)省空間,主要是省在key的長(zhǎng)度上

hash結(jié)構(gòu)缺點(diǎn)

  • 過(guò)期功能不能用在field上,只能用在key上
  • Redis集群架構(gòu)下不適合大規(guī)模使用,因?yàn)榧簳?huì)根據(jù)key分到不同的槽位,如果單個(gè)key下數(shù)據(jù)量大,所有訪問(wèn)都會(huì)轉(zhuǎn)到指定的槽位,無(wú)法做分片存儲(chǔ)。 所以最好只是單個(gè)用戶下單個(gè)模塊使用hash結(jié)構(gòu)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容