【redis 学习系列】API的理解与使用(二)

3、哈希

几乎所有的语言都支持了哈希(hash)类型。在Redis中,哈希类型是指键值本身又是一个键值对结构,形如:value = {{field, value} ... {field, value}},Redis键值对和哈希类型的关系可以入下图所示:

哈希类型中的映射关系叫做field-value,注意这里的value指的是field对应的值,而不是键对应的值。

3.1命令

(1)设置值

1 hset key field value

如果设置成功会返回1,反之则返回0。此外Redis提供了hsetnx命令的作用同setnx,只不过作用域由键变为了field

(2)获取值

1 hget key field

如果获取的键或者field不存在,则返回nil

(3)删除field

1 hdel key field [field ...]

hdel会删除一个或者多个field,返回结果为成功删除field的个数

(4)计算filed的个数

1 hlen key

(5)批量设置或获取filed-value

1 hmget key field [field ...]
2 hmset key field value [field value ...]

hmset和hmget分别是批量设置和获取field-value,hmset需要的参数是key和多对field-value,hmget需要的参数是key和多个field。

(6)判断filed是否存在

1 hexists key field

例如user:3包含name域,所以返回为1,不包含时,返回为0。

(7)获取所有filed

1 hkeys key

hkeys命令应该叫hfield更为恰当,它返回的是执行哈希键所有的field

(8)获取所有value

1 hvals key

(9)获取所有的filed-value

1 hgetall key

如下的操作会获取user:3的所有field-value。

 

在使用hgetall命令时,如果哈希元素个数比较多时,会存在阻塞Redis的可能,如果开发人员只是为了获取部分field,可以使用hmget,如果一定要获得全部的field-value,可以使用命令hscan,该命令会渐进式遍历哈希类型。

(10)hincrby hincrbyfloat

1 hincrby key field
2 hincrbyfloat key field

命令hincrby和hincrbyfloat就像incrby和incrbyfloat一样,只不过它们的作用域为field。

(11)计算value的字符串长度(Redis 3.2以上版本)

1 hstrlen key field

例如hget user:3 name的value是kevin,那么hstrlen的返回值为5。

3.2 内部编码

哈希类型的内部编码有2种:

3.3 使用场景

原文地址:https://www.cnblogs.com/xuelisheng/p/10777028.html