NoSQL----Redis 2.4--Hash

前端之家收集整理的这篇文章主要介绍了NoSQL----Redis 2.4--Hash前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

将一个对象存储在Hash类型中会占用更少的内存,并且更方便的存取整个对象。

1、hset方法

HSET key field value

将哈希表key中的字段(域)field的值设为value。

如果key不存在,一个新的哈希表被创建并进行HSET操作。

如果域field已经存在于哈希表中,旧值将被覆盖。

redis>HSETwebsitegoogle"www.g.cn"#对hash表websit的字段google设置为www.g.cn
(integer)1

redis>HSETwebsitegoogle"www.google.com"#覆盖一个旧域
(integer)0

2、hsetnx方法

HSETNX key field value

将哈希表key中的域field的值设置为value,当且仅当域field不存在。

若域field已经存在,该操作无效。

如果key不存在,一个新哈希表被创建并执行HSETNX命令。

redis>HSETNXnosqlkey-value-storeredis
(integer)1

redis>HSETNXnosqlkey-value-storeredis#操作无效,域key-value-store已存在
(integer)0

3、hmset方法

HMSET key field value [field value ...]

同时将多个field - value(域-值)对设置到哈希表key中。

此命令会覆盖哈希表中已存在的域。

如果key不存在,一个空哈希表被创建并执行HMSET操作。


#情况1:哈希表

redis>HMSETwebsitegooglewww.google.comyahoowww.yahoo.com
OK

redis>HGETwebsitegoogle
"www.google.com"

redis>HGETwebsiteyahoo
"www.yahoo.com"


#情况2:类型错误时

redis>SETG10#出错情况
OK

redis>HMSETGnamehuangzage20
(error)ERROperationagainstakeyholdingthewrongkindofvalue

4、hget方法

HGET key field

返回哈希表key中给定域field的值。


redis>HSEThuangzbloghuangz.51cto.com
(integer)1

redis>HGEThuangzblog
"huangz.51cto.com"

5、hmget方法

HMGET key field [field ...]

返回哈希表key中,一个或多个给定域的值。

如果给定的域不存在于哈希表,那么返回一个nil值。

因为不存在的key被当作一个空哈希表来处理,所以对一个不存在的key进行HMGET操作将返回一个只带有nil值的表。


redis>HMSETpetdog"tudou"cat"wandou"#一次保存多个值
OK

redis>HMGETpetdogcatfake_pet#返回值的顺序和传入参数的顺序一样。
1)"tudou"
2)"wandou"
3)(nil)#不存在的域返回nil值

6、hgetall方法

HGETALL key

返回哈希表key中,所有的域和值。

在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。

redis>HSEThash_namejack"JackSparrow"
(integer)1

redis>HSEThash_namegump"ForrestGump"
(integer)1

redis>HGETALLhash_name
1)"jack"#域
2)"JackSparrow"#值
3)"gump"#域
4)"ForrestGump"#值

7、hdel方法

HDEL key field [field ...]

删除哈希表key中的一个或多个指定域,不存在的域将被忽略。

备注:在Redis2.4以下的版本里,HDEL每次只能删除单个域,如果你需要在一个原子时间内删除多个域,请将命令包含在MULTI/EXEC块内。

#测试数据

redis>HGETALLabbr
1)"a"
2)"apple"
3)"b"
4)"banana"
5)"c"
6)"cat"
7)"d"
8)"dog"

#删除单个域

redis>HDELabbra
(integer)1

#删除不存在的域

redis>HDELabbrnot-exists-field
(integer)0

#删除多个域

redis>HDELabbrbc
(integer)2

redis>HGETALLabbr
1)"d"
2)"dog"

8、hlen方法

HLEN key

返回哈希表key中域的数量

redis>HSEThash_namejack"JackSparrow"
(integer)1

redis>HSEThash_namegump"ForrestGump"
(integer)1

redis>HLENhash_name
(integer)2

9、hexists方法


HEXISTS key field

查看哈希表key中,给定域field是否存在。

redis>HEXISTSphonemyphone
(integer)0

redis>HSETphonemyphonenokia-1110
(integer)1

redis>HEXISTSphonemyphone
(integer)1

9、hincrby方法

INCRBY key field increment

为哈希表key中的域field的值加上增量increment。

增量也可以为负数,相当于对给定域进行减法操作。

如果key不存在,一个新的哈希表被创建并执行HINCRBY命令。

如果域field不存在,那么在执行命令前,域的值被初始化为0。

对一个储存字符串值的域field执行HINCRBY命令将造成一个错误

本操作的值限制在64位(bit)有符号数字表示之内。

#情况1:increment为正数

redis>HEXISTScounterpage_view#对空域进行设置
(integer)0

redis>HINCRBYcounterpage_view200
(integer)200

redis>HGETcounterpage_view
"200"


#情况2:increment为负数

redis>HGETcounterpage_view
"200"

redis>HINCRBYcounterpage_view-50
(integer)150

redis>HGETcounterpage_view
"150"


#情况3:尝试对字符串值的域执行HINCRBY命令

redis>HSETmyhashstringhello,world#设定一个字符串值
(integer)1

redis>HGETmyhashstring
"hello,world"

redis>HINCRBYmyhashstring1#命令执行失败,错误。
(error)ERRhashvalueisnotaninteger

redis>HGETmyhashstring#原值不变
"hello,world"

10、hkeys方法


HKEYS key

返回哈希表key中的所有域。

#情况1:哈希表非空

redis>HMSETwebsitegooglewww.google.comyahoowww.yahoo.com
OK

redis>HKEYSwebsite
1)"google"
2)"yahoo"


#情况2:空哈希表/key不存在

redis>EXISTSfake_key
(integer)0

redis>HKEYSfake_key
(emptylistorset)

11、hvals方法


HVALS key

返回哈希表key中的所有值。


#情况1:非空哈希表

redis>HMSETwebsitegooglewww.google.comyahoowww.yahoo.com
OK

redis>HVALSwebsite
1)"www.google.com"
2)"www.yahoo.com"


#情况2:空哈希表/不存在的key

redis>EXISTSnot_exists
(integer)0

redis>HVALSnot_exists
(emptylistorset)
原文链接:https://www.f2er.com/nosql/203764.html

猜你在找的NoSQL相关文章