【一】简介
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
给
hget
从
hmset
批量设置 hash 的值
hexists
查看
hkeys
列出该 hash 集合所有 field
hvals
列出该 hash 集合中所有的 value
hincrby
为哈希表
hsetnx
将哈希表
【三】数据结构
Hash 类型对应的数据结构是两种: ziplist (压缩列表), hashtable (哈希表)。当 field-value 长度较短且个数较少时,使用 ziplist ,否则使用 hashtable。