简介
Redis hash 是一个键值对集合,
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。它类似于Java里面的Map<String,Object>
。
比如现在需要存储用户信息,用户ID为查找的key,存储的value 用户对象包括姓名,年龄,账号等信息
这里有两种存储方式:
1. 将对象序列化后存储
第一种方式就是将对象序列化成字符串进行存储
这种方式的优点是存储简单,缺点就是当需要修改对象中的某个属性时需要将Redis中拿到的字符串反序列化成该对象,然后修改此对象的值,最后再将修改后的对象序列化后存到Redis中。
2. 存储为hash对象
另外一种方式就是将该对象以hash对象的形式存储到Redis中。通过hash对象的方式存储对象的话,修改单个字段就方便多了。只需要取出需要修改的那个字段的值然后直接进行修改即可。
它实际的存储结构是:
常用命令
给<key>
集合中的<field>
键赋值<value>
hset <key> <field> <value>
从<key1>
集合<field>
取出value
hget <key1> <field>
批量设置hash的值
hmset <key1> <field> <value1> <field2> <value2> ....
列出指定<key>
的hash集合的所有field
hkeys <key>
查看哈希表key中,给定域field是否存在
hexists <key1> <field>
- 列出指定
<key>
的hash集合的所有value
hvals <key>
为哈希表key中的域 field 的值加上增量1,-1
hincrby <key> <field> <increment>
将哈希表key中的域field的值设置为value,当且仅当域field 不存在
hsetnx <key> <field> <value>
数据结构
Hash类型对应的数据结构有两种:ziplist (压缩列表),hashtable (哈希表)。当field-value长度较短且个数较少时,使用ziplist,否则使用hashtable。
详细可以观看此文 Redis(十)-Redis的数据结构之字典
参考
《Redis的设计与实现》