延续上一篇list,本次主要介绍hash类型

由field和关联的value组成的map键值对,field和value为字符串类型,一个hash散列最多包含2的32次方减1个键值对。

redis详解-(5)hash散列

1.设置单个字段

key的field不存在的情况下执行,key不存在直接创建

hset key field value
hget key field

hsetnx key field value

redis详解-(5)hash散列

2.设置多个字段

操作同样也具有原子性

hmset key field value [field value …]
hmget key field [field …]

redis详解-(5)hash散列

3.返回字段个数

hlen key

redis详解-(5)hash散列

4.判断字段是否存在

key或者value不存在返回0,存在返回1

hexists key field

redis详解-(5)hash散列

5.返回所有的键值对

hgetall key

redis详解-(5)hash散列

6.返回所有的键或值

hkeys
hvalues

redis详解-(5)hash散列

7.加减法

hincrby key field increment
hincrbyfloat key field increment

redis详解-(5)hash散列

8.删除指定的字段

hdel key field [field …]

redis详解-(5)hash散列

每创建一个键,redis都会为这个键存储一些附加的管理信息(比如这个键的类型,这个键最后一次被访问的时间等等),所以数据库里面的键越多,redis数据库服务器在存储附加管理信息方面耗费的内存就越多,花在管理数据库键上的cpu也会越多,在字段对应的值上进行浮点数的增量计算。所以使用hash可以减少键的数量。

不适合hash的情况
使用二进制位操作命令:因为redis目前支持对字符串键进行setbit,getbit,bitop等操作,如果你想使用这些操作,那么只能使用字符串键,虽然散列也能保存二进制数据。
使用过期键功能:redis的键过期功能目前只能对键进行过期操作,而不能对散列的字段进行过期操作,因此如果你要对键值对数据使用过期功能的话,那么只能把键值对存储在字符串里面。

相关文章: