【一】简介
Redis hash 是一个键值对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表, hash 特别适合用于存储对象。
类似 Java 里面的 Map < String , Object >
用户 ID 为查找的 key ,存储的 value 用户对象包含姓名,年龄,生日等信息,如果用普通的 key/value 结构来存储
主要有以下2种存储方式
方法一:
key 序列化的 value 对象
>>>> 姓名数据
用户 ID >>>>>> 年龄数据
>>>> 生日数据
每次修改用户的某个属性需要先反序列化,改好以后,再序列化回去,开销较大。
方法二:
key Value
用户 ID + 姓名标签 >>>> 姓名数据
用户 ID + 年龄标签 >>>> 年龄数据
用户 ID + 生日标签 >>>> 生日数据
用户 ID 数据冗余
还有第三种:
key Hash
field value
>>>> 姓名标签 姓名数据
用户 ID >>>>>> 年龄标签 年龄数据
>>>> 生日标签 生日数据
通过 key (用户 ID)+ field (标签属性)口可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题。
【二】常用命令
hset <key> <field> <value>
给 <key> 集合中的 <field> 键赋值 <value>
hget <key> <field>
从 <key> 集合中取出 <field> 对应的 value
hmset <key> <field1> <value1> <field2> <value2> <field3> <value3> ...
批量设置 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 的值设置为 value ,当且仅当域 field 不存在
【三】数据结构文章来源:https://www.toymoban.com/news/detail-652877.html
Hash 类型对应的数据结构是两种: ziplist (压缩列表), hashtable (哈希表)。当 field-value 长度较短且个数较少时,使用 ziplist ,否则使用 hashtable。文章来源地址https://www.toymoban.com/news/detail-652877.html
到了这里,关于Redis 哈希( Hash )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!