如果存储一个对象 这个时候使用String 类型就不适合了,如果在String中修改一个数据的话,这就感到烦琐。
hash 散列类型 ,他提供了字段与字段值的映射,当时字段值只能是字符串类型
命令:
1>赋值
HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0。
一次只能设置一个字段值
语法:HSET key field value
比如:
127.0.0.1:6379> hset user username zhangsan
(integer) 1
一次可以设置多个字段值
语法:HMSET key field value [field value …]
127.0.0.1:6379> hmset user age 20 username lisi
OK
语法:HSETNX key field value
127.0.0.1:6379> hsetnx user age 30 如果user中没有age字段则设置age值为30,否则不做任何操作
(integer) 0
2>取值
一次只能获取一个字段值
语法:HGET key field
127.0.0.1:6379> hget user username
"zhangsan“
一次可以获取多个字段值
语法:HMGET key field [field …]
127.0.0.1:6379> hmget user age username
1) "20"
2) "lisi"
获取所有字段值
语法:HGETALL key
127.0.0.1:6379> hgetall user
1) "age"
2) "20"
3) "username"
4) "lisi"
3>删除字段
可以删除一个或多个字段,返回值是被删除的字段个数
语法:HDEL key field [field …]
127.0.0.1:6379> hdel user age
(integer) 1
127.0.0.1:6379> hdel user age name
(integer) 0
127.0.0.1:6379> hdel user age username
(integer) 1
增加数字
语法: HINCRBY key field increment
127.0.0.1:6379> hincrby user age 2 将用户的年龄加2
(integer) 22
127.0.0.1:6379> hget user age 获取用户的年龄
"22“
注: 这个没有递减数字这一说;
4>其他
判断字段是否存在
语法:HEXISTS key field
127.0.0.1:6379> hexists user age 查看user中是否有age字段
(integer) 1
127.0.0.1:6379> hexists user name 查看user中是否有name字段
(integer) 0
只获取字段名或字段值
语法:
HKEYS key
HVALS key
127.0.0.1:6379> hmset user age 20 name lisi
OK
127.0.0.1:6379> hkeys user
1) "age"
2) "name"
127.0.0.1:6379> hvals user
1) "20"
2) "lisi"
获取字段数量
语法:HLEN key
127.0.0.1:6379> hlen user
(integer) 2
eg;
注:map是最常见的数据类型;