【一】簡(jiǎn)介?
Redis hash 是一個(gè)鍵值對(duì)集合。
?Redis hash 是一個(gè) string 類型的?field?和?value?的映射表, hash 特別適合用于存儲(chǔ)對(duì)象。
類似 Java 里面的 Map < String , Object?>
?用戶 ID 為查找的 key ,存儲(chǔ)的 value 用戶對(duì)象包含姓名,年齡,生日等信息,如果用普通的 key/value 結(jié)構(gòu)來存儲(chǔ)
主要有以下2種存儲(chǔ)方式
方法一:
? ? ? ? key? ? ? ? ? ? ? ? ? ? ? ? 序列化的 value 對(duì)象
? ? ? ? ? ? ? ? ????????>>>>? ? ? ? ????????姓名數(shù)據(jù)
用戶 ID ????????>>>>>>? ? ? ? ? ? ? ?年齡數(shù)據(jù)
? ? ? ? ? ? ? ? ????????>>>>? ? ? ? ? ? ? ? 生日數(shù)據(jù)
每次修改用戶的某個(gè)屬性需要先反序列化,改好以后,再序列化回去,開銷較大。
方法二:
? ? ? ? key? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Value
用戶 ID + 姓名標(biāo)簽? ? ? ? >>>>? ? ? ? ? ? ? ? 姓名數(shù)據(jù)
用戶 ID + 年齡標(biāo)簽? ? ? ? >>>>? ? ? ? ? ? ? ? 年齡數(shù)據(jù)
用戶 ID + 生日標(biāo)簽? ? ? ? >>>>? ? ? ? ? ? ? ? 生日數(shù)據(jù)
用戶 ID 數(shù)據(jù)冗余
還有第三種:
? ? ? ? key? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????Hash
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? field? ? ? ? ? ? ? ? value
? ? ? ? ? ? ? ? ????????>>>>? ? ? ? ? ? ? 姓名標(biāo)簽? ? ? ? ?姓名數(shù)據(jù)
用戶 ID ????????>>>>>>? ? ? ? ? ? ?年齡標(biāo)簽? ? ? ? ?年齡數(shù)據(jù)
? ? ? ? ? ? ? ? ????????>>>>? ? ? ? ? ? ? 生日標(biāo)簽? ???????生日數(shù)據(jù)
通過 key (用戶 ID)+ field (標(biāo)簽屬性)口可以操作對(duì)應(yīng)屬性數(shù)據(jù)了,既不需要重復(fù)存儲(chǔ)數(shù)據(jù),也不會(huì)帶來序列化和并發(fā)修改控制的問題。
【二】常用命令
?hset <key> <field> <value>
給 <key> 集合中的 <field> 鍵賦值 <value>
?hget <key> <field>
從 <key> 集合中取出 <field> 對(duì)應(yīng)的 value
?hmset <key> <field1> <value1> <field2> <value2> <field3> <value3> ...
批量設(shè)置 hash 的值
?hexists <key> <field>
查看 <key> 中是否存在 <field>
?hkeys <key>
列出該 hash 集合所有 field
?hvals <key>
列出該 hash 集合中所有的 value
?hincrby <key> <field> <increment>
為哈希表 <key>?中的域 <field>?的值加上增量 1 -1
?hsetnx <key> <field> <value>
將哈希表 <key>?中的域 field 的值設(shè)置為 value ,當(dāng)且僅當(dāng)域 field 不存在
【三】數(shù)據(jù)結(jié)構(gòu)文章來源:http://www.zghlxwxcb.cn/news/detail-652877.html
?Hash 類型對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)是兩種: ziplist (壓縮列表), hashtable (哈希表)。當(dāng) field-value 長(zhǎng)度較短且個(gè)數(shù)較少時(shí),使用 ziplist ,否則使用 hashtable。文章來源地址http://www.zghlxwxcb.cn/news/detail-652877.html
到了這里,關(guān)于Redis 哈希( Hash )的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!