2.3 针对哈希类型变量的命令
2.3.1 设置并获取哈希值
HSET
:设置哈希值.语法:HSET key field value [field value ...]
.其中:key
:待缓存对象的键名field value
:以键值对形式描述的对象数据.针对同一个key,可以用多个field value
对来存储数据.这里的field
可以理解成对象的属性名,value
可以理解为对象的属性值注:若一个key已经被定义为类型A,再使用其他类型的指令操作该key时将会报错
返回值:
1
:表示成功设置了置顶field的值.若field之前不存在,则创建新的field并设置值0
:表示字段已存在,HSET
命令将更新字段的值-1
:表示命令执行出错或参数错误
HGET
:读取哈希值.语法:HGET key field
.其中:key
:待读取对象的键名如果存在key和field所对应的数据,则返回该数据,否则返回nil
例:
存储一个工号为001的员工信息.其中:
姓名:peter
薪水:10000
部门:dataTeam
127.0.0.1:6379> HSET 001 name 'peter' salary 10000 dep dataTeam
(integer) 3
可以看到,HSET
命令的返回值为设置的字段数量
查询该员工的姓名、薪水、部门:
127.0.0.1:6379> HGET 001 name
"peter"
127.0.0.1:6379> HGET 001 salary
"10000"
127.0.0.1:6379> HGET 001 dep
"dataTeam"
查询一个不存在的key:
127.0.0.1:6379> HGET 002 name
(nil)
可以看到,返回值为nil
查询一个存在的key中不存在的field:
127.0.0.1:6379> HGET 001 age
(nil)
可以看到,返回值也为nil
查询哈希值时只传入key而不传入field:
127.0.0.1:6379> HGET 001
(error) ERR wrong number of arguments for 'hget' command
2.3.2 hsetnx命令
HSETNX
语法:
HSETNX key field value
功能:只有当key和field所对应的value不存在时才设置value.设置成功返回1,设置失败返回0
例:重新设置工号为001的员工姓名
查看当前姓名:
127.0.0.1:6379> HGET 001 name
"peter"
使用HSET
命令设置姓名:
127.0.0.1:6379> HSET 001 name 'johnson'
(integer) 0
127.0.0.1:6379> HGET 001 name
"johnson"
可以看到,使用HSET
命令可以更新field值
例:若工号为002的员工姓名不存在,则设置员工姓名
127.0.0.1:6379> HSETNX 002 name 'tom'
(integer) 1
可以看到,此时由于key为002
、field为name
的值不存在,故设置成功,返回1
127.0.0.1:6379> HSETNX 002 name 'tom'
(integer) 0
可以看到,此时由于key为002
、field为name
的值已存在,故设置失败,返回0
注:HSETNX
命令的key后边只能跟一对field value
127.0.0.1:6379> HSETNX 002 salary 9000 dep dataTeam
(error) ERR wrong number of arguments for 'hsetnx' command
2.3.3 针对key的相关操作
HKEYS key
功能:查看key对应的哈希类型数据的所有field
HVALS key
:功能:查看key对应的哈希类型的所有value
HGETALL key
:功能:以field和value对的形式查看key对应的哈希类型数据
例:
设置一个哈希类型的数据:
127.0.0.1:6379> HSET 010 name 'mary' salary 8000
(integer) 2
查看key对应的所有field:
127.0.0.1:6379> HKEYS 010
1) "name"
2) "salary"
查看key所对应的所有value:
127.0.0.1:6379> HVALS 010
1) "mary"
2) "8000"
查看key所对应的field-value对:
127.0.0.1:6379> HGETALL 010
1) "name"
2) "mary"
3) "salary"
4) "8000"
对一个不存在的key执行
HKEYS
、HVALS
、HGETALL
指令:
127.0.0.1:6379> HKEYS 00
(empty array)
127.0.0.1:6379> HVALS 00
(empty array)
127.0.0.1:6379> HGETALL 00
(empty array)
可以看到,当无法找到key时,会返回empty array
2.3.4 用hexists命令判断值是否存在
HEXISTS
:语法:
HEXISTS key field
功能:判断key和field对应的value是否存在.存在返回1,反之则返回0
例:
127.0.0.1:6379> HEXISTS 010 name
(integer) 1
127.0.0.1:6379> HEXISTS 00 name
(integer) 0
127.0.0.1:6379> HEXISTS 00
(error) ERR wrong number of arguments for 'hexists' command
若调用HEXISTS
命令时只写了1个参数则会报错
2.3.5 对哈希类型数据的删除操作
HDEL
:语法:
HDEL key field [field ...]
功能:删除key指定的field数据.该命令可以同时删除1个key对应的多个field数据.若想删除key对应的整个哈希类型数据,则需使用
DEL key
命令(该命令可以对所有类型的数据使用,删除成功返回1;删除失败返回0)
例:
删除key为001所对应的哈希类型的name和salary这2个field:
127.0.0.1:6379> HDEL 001 name salary
(integer) 2
删除key对应的哈希类型中一个不存在的field:
127.0.0.1:6379> HDEL 001 gender
(integer) 0
调用HDEL
指令时只填写了1个参数:
127.0.0.1:6379> HDEL 001
(error) ERR wrong number of arguments for 'hdel' command
可以看到,会报错
删除key对应的整个哈希类型数据:
127.0.0.1:6379> DEL 001
(integer) 1
查看删除的结果:
127.0.0.1:6379> HVALS 001
(empty array)
Last updated