字符串类型是键和键值。 而散列类型 hash 是键、字段、字段值。
散列类型适合存储对象,使用对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。
关系型数据库的缺点:数据是以二维表的形式存储的,这就要求所有的记录都拥有同样的属性,无法单独为某条记录增减属性。
当不同的记录有不同的属性时,Redis散列类型的灵活性就展现出来了。
twowinter备注:散列类型比字符串类型多出了 field 字段,可以给一个 KEY 设置多个 field 及 value。
HSET key field value
HGET key field
HMSET key field value [field value...]
HMGET key field [field...]
HGETALL key
Redis 里的每个键都有明确的数据类型。HSET -> 散列类型,SET -> 字符串类型。
HEXITS key field
HSETNX key field value
HINCRBY key field increment
HDEL key field [field ...]
twowinter备注:散列类型的 key + field 操作起来,就和字符串类型的 key 差不多。
用散列类型来存储一个文章对象是比较合适的。
键是文章。 字段是 title、author、time、content。
HKEYS key // 获取字段 HVALS key // 获取字段值 HLEN key // 获得字段数量
127.0.0.1:6379> hset post:1 title my_post
(integer) 1
127.0.0.1:6379> hmset post:1 time 190319_1502 author tt
OK
127.0.0.1:6379> hetall post:1
(error) ERR unknown command `hetall`, with args beginning with: `post:1`,
127.0.0.1:6379> hgetall post:1
1) "title"
2) "my_post"
3) "time"
4) "190319_1502"
5) "author"
6) "tt"
127.0.0.1:6379> hkeys post:1
1) "title"
2) "time"
3) "author"
127.0.0.1:6379> hvals post:1
1) "my_post"
2) "190319_1502"
3) "tt"
127.0.0.1:6379> hlen post:1
(integer) 3