redis 学习手册之哈希表数据类型hashes操作命令

哈希 hashes

概述

Hashes类型看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。如Id、Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对

命令

命令

时间

命令描述

返回值

HSET
key
field value

O(1)

设置hash指定的Key设定Field/Value对,如果Key不存在,该命令将创建新Key以参数中的Field/Value对,如果参数中的Field在该Key中已经存在,则用新值覆盖其原有值。 

1表示新的Field被设置了新值,0表示Field已经存在,用新值覆盖原有值。 

HSETNX
key
field value

O(1)

只有当参数中的Key或Field不存在的情况下,为指定的Key设定Field/Value对,否则该命令不会进行任何操作。 

1表示新的Field被设置了新值,0表示Key或Field已经存在,该命令没有进行任何操作。

HGET 
key field 

O(1) 

返回指定Key中指定Field的关联值。

返回参数中Field的关联值,如果参数中的Key或Field不存,返回nil。

HMGET
key
field [field ...] 

O(N) 

时间复杂度中的N表示请求的Field数量。获取和参数中指定Fields关联的一组Values。如果请求的Field不存在,其值返回nil。如果Key不存在,该命令将其视为空Hash,因此返回一组nil。

返回和请求Fields关联的一组Values,其返回顺序等同于Fields的请求顺序。

HMSET 
key
field value
[field value ...]

O(N)

时间复杂度中的N表示被设置的Field数量。逐对依次设置参数中给出的Field/Value对。如果其中某个Field已经存在,则用新值覆盖原有值。如果Key不存在,则创建新Key,同时设定参数中的Field/Value。  

HEXISTS
key field 

O(1) 

判断指定Key中的指定Field是否存在。

1表示存在,0表示参数中的Field或Key不存在。

HLEN 
key 

O(1)

获取该Key所包含的Field的数量。

返回Key包含的Field数量,如果Key不存在,返回0。

HDEL 
key
field [field ...] 

O(N)

时间复杂度中的N表示参数中待删除的字段数量。从指定Key的Hashes Value中删除参数中指定的多个字段,如果不存在的字段将被忽略。如果Key不存在,则将其视为空Hashes,并返回0.

实际删除的Field数量。

HINCRBY
key field increment 

O(1)

增加指定Key中指定Field关联的Value的值。如果Key或Field不存在,该命令将会创建一个新Key或新Field,并将其关联的Value初始化为0,若存在再指定数字增加的操作。该命令支持的数字是64位有符号整型,即increment可以负数。 

返回运算后的值。

HINCRBYFLOAT
key field increment 

O(1)

增加指定Key中指定Field关联的Value的值。如果Key或Field不存在,该命令将会创建一个新Key或新Field,并将其关联的Value初始化为0,若存在增加浮点的值。该命令支持的数字是64位有符号浮点数,即increment可以负数。 

返回运算后的值。

HGETALL
key

O(N) 

时间复杂度中的N表示Key包含的Field数量。获取该键包含的所有Field/Value。其返回格式为一个Field、一个Value,并以此类推。

Field/Value的列表。

HKEYS
key 

O(N)

时间复杂度中的N表示Key包含的Field数量。返回指定Key的所有Fields名。

Field的列表。

HVALS
key 

O(N)

时间复杂度中的N表示Key包含的Field数量。返回指定Key的所有Values名。 

Value的列表。 

 

实例

#链接redis数据库

[root@datahubdb1 bin]# ./redis-cli -a daphne

127.0.0.1:6379>

#hset、hget、hlen、hexists、hdel

#设置key hash1 fieldname value zheyun.su

127.0.0.1:6379> hset hash1 name zhenyun.su

(integer) 1

127.0.0.1:6379> hset hash1 age  30

(integer) 1

127.0.0.1:6379> hset hash1 hirthday  2015-12-16

(integer) 1

#key hash1 field age value

127.0.0.1:6379> hget hash1 age

"30"

127.0.0.1:6379> hget hash1 hirthday

"2015-12-16"

127.0.0.1:6379> hget hash1 name

"zhenyun.su"

#key hash1 field个数

127.0.0.1:6379> hlen hash1

(integer) 3

#判断key hash1 fieldage是否存在

127.0.0.1:6379> hexists hash1 age

(integer) 1

#key hash1 field id不存在时,新增idfield栏位

127.0.0.1:6379> hsetnx hash1 id 1

(integer) 1

127.0.0.1:6379> hget hash1 id

"1"

#删除key hash1 fieldid

127.0.0.1:6379> hdel hash1 id

(integer) 1

#hmset、hmget

#设置key hash1多个 field name age hirthday

127.0.0.1:6379> hmset hash1 name zhenyun.suage 30 hirthday 2015-12-16

OK

#key hash1多个 field name age hirthday的值

127.0.0.1:6379> hmget hash1 name agehirthday

1) "zhenyun.su"

2) "30"

3) "2015-12-16"

127.0.0.1:6379>

#hgetall、hkeys、hvals

#key hash1所有的filedvalue

127.0.0.1:6379> hgetall hash1

1) "name"

2) "zhenyun.su"

3) "age"

4) "30"

5) "hirthday"

6) "2015-12-16"

#key hash1所有的filed

127.0.0.1:6379> hkeys hash1

1) "name"

2) "age"

3) "hirthday"

#key hash1所有的value

127.0.0.1:6379> hvals hash1

1) "zhenyun.su"

2) "30"

3) "2015-12-16"

127.0.0.1:6379>

#hincrby、hincrbyfloat

#key hash1 filed age的值加5

127.0.0.1:6379> hincrby hash1 age 5

(integer) 35

127.0.0.1:6379> hget hash1 age

"35"

127.0.0.1:6379> hsetnx hash1 salary 20000.0

(integer) 1

127.0.0.1:6379> hincrby hash1 salary10000.5

(error) ERR value is not an integer or out ofrange

#key hash1 filed salary的值加10000.5

127.0.0.1:6379> hincrbyfloat hash1 salary10000.5

"30000.5"

127.0.0.1:6379>

 

 您觉的有所收获,请保持持续的关注。
您发现博客中有的纰漏,请指正。
您有更好的建议或更好的实现方式,请赐教。(zhenyun.su@qq.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值