【Redis实战】散列类型(Hash)

2022-05-12 08:53:14 浏览数 (1)

文章目录
  • 1、赋值与取值(HSET)
  • 2、同时设置多个字段(HMSET)
  • 3、判断字段是否存在(HEXISTS)
  • 4、当字段不存在时赋值(HSETNX)
  • 5、增加数字(HINCRBY)
  • 6、删除字段(HDEL)
  • 7、只获取字段名或字段值(HKEYS)
  • 8、获取字段数量(HLEN)

1、赋值与取值(HSET)

  HSET命令用来给字段赋值,而HGET命令用来获得字段的值。用法如下:

代码语言:javascript复制
127.0.0.1:6379> HSET car price 500
(integer) 1
127.0.0.1:6379> HSET car name BMW
(integer) 1
127.0.0.1:6379> HGET car name
"BMW"
127.0.0.1:6379> HSET car price 600
(integer) 0

  HSET命令的方便之处在于不区分插入和更新操作,这意味着修改数据时不用事先判断字段是否存在,来决定要执行的是插入操作(update)还是更新操作(insert)。当执行的是插入操作时(即之前字段不存在)HSET命令会返回1,当执行的是更新操作时(即之前的字段已经存在)HSET命令会返回0。更进一步,当键本身不存在时,HSET命令还会自动建立它。

2、同时设置多个字段(HMSET)

代码语言:javascript复制
127.0.0.1:6379> HMSET car price 500 name BMW
OK
127.0.0.1:6379> HMGET car price name
1) "500"
2) "BMW"

3、判断字段是否存在(HEXISTS)

  HEXISTS命令用来判断一个字段是否存在。如果存在则返回1,否则返回0。

代码语言:javascript复制
127.0.0.1:6379> HEXISTS car model
(integer) 0
127.0.0.1:6379> HSET car model C200
(integer) 1
127.0.0.1:6379> HEXISTS car model
(integer) 1

4、当字段不存在时赋值(HSETNX)

  HSETNX命令和HSET命令类似,区别在于如果字段已经存在,HSENX命令将不执行任何操作。其实现可以表示为如下伪代码:

代码语言:javascript复制
def hsetnx($key,$field,$value)
	$isExists=HEXISTS $key,$field
	if $isExists is 0
		HSET $key,$field,$value
		return 1
	else
		return 0
代码语言:javascript复制
127.0.0.1:6379> hsetnx car price 600
(integer) 0
127.0.0.1:6379> hget car price
"500"

5、增加数字(HINCRBY)

  散列类型没有HINCR命令,但是可以通过HINCRBY key value 1来实现。

代码语言:javascript复制
127.0.0.1:6379> HINCRBY person score 90
(integer) 90
127.0.0.1:6379> HGET person score
"90"

6、删除字段(HDEL)

  HDEL命令可以删除一个或多个字段,返回值是被删除的字段个数。

代码语言:javascript复制
127.0.0.1:6379> HDEL car model
(integer) 1
127.0.0.1:6379> HDEL car model
(integer) 0

7、只获取字段名或字段值(HKEYS)

代码语言:javascript复制
127.0.0.1:6379> HKEYS car
1) "price"
2) "name"
127.0.0.1:6379> HVALS car
1) "500"
2) "BMW"

8、获取字段数量(HLEN)

代码语言:javascript复制
127.0.0.1:6379> HLEN car
(integer) 2

0 人点赞