一、简介
1.Redis hash是一个键值对集合
2.Redis hash 是一个string类型的filed 和 value 的映射表,hash特别适合用于存储对象。类似java里面的Map<String,Object>。
二、常用命令
hset <key> <field> <value> 给key集合中的<field>键赋值<value>
hget <key> <field> 从key集合<field> 取出value
127.0.0.1:6379> hset user:1001 id 1
(integer) 1
127.0.0.1:6379> hset user:1001 name zhangsan
(integer) 1
127.0.0.1:6379> hget user:1001 name
"zhangsan"
hmset <key> <field1> <value1> <field2> <value2> ... 批量设置hash值
127.0.0.1:6379> hmset user:1002 id 2 name lisi
OK
127.0.0.1:6379> hget user:1002 id
"2"
hexists <key> <field> 查看hash表key中,给定域field是否存在
127.0.0.1:6379> hexists user:1002 id
(integer) 1
127.0.0.1:6379> hexists user:1002 age
(integer) 0
hkeys <key> 列出该hash集合的所有field
127.0.0.1:6379> hkeys user:1002
1) "id"
2) "name"
hvals <key> 列出该hash集合的所有value
127.0.0.1:6379> hvals user:1002
1) "2"
2) "lisi"
hincrby <key> <field> <increment> 为哈希表key中的域field的值加上增量increment
127.0.0.1:6379> hincrby user:1002 age 2
(integer) 22
127.0.0.1:6379> hvals user:1002
1) "2"
2) "lisi"
3) "22"
hsetnx <key> <field> <value> 将哈希表key中的域field 的值设为value,当且仅当域field不存在
127.0.0.1:6379> hsetnx user:1002 age 40
(integer) 0
127.0.0.1:6379> hsetnx user:1002 gender 1
(integer) 1
127.0.0.1:6379> hvals user:1002
1) "2"
2) "lisi"
3) "22"
4) "1"
三、数据结构
Hash类型对应的数据结构是两种,ziplist(压缩列表),hashtable(哈希表),当field-value ,长度较短且个数较少时,使用ziplist,否则使用hashtable。