1、Hash数据类型概述
hash是一个键值对(key - value)集合,用于存储对象。可以采用这样的命名方式(hash格式):对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。
如:存储ID为2的汽车对象。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。
2、Hash数据类型常用命令
1、hset :给键值为myhash的键设置字段为##,值为##
2、hget:获取键值为##,字段为##的值
3、hdel:删除##键中字段名为##的字段
4、hexists:判断##键中是否存在##字段
5、hlen:命令获取##键的字段数量
6、hsetnx:通过hsetnx命令给##添加新字段##,其值为##,因为该字段已经被删除,所以该命令添加成功并返回1
127.0.0.1:6379> hset myhash field1 "zhangsan" ## 设置键myhash 字段为field1,值为zhangsan
(integer) 1
127.0.0.1:6379> hget myhash field1 ## 获取myhash 的字段field1的值
"zhangsan"
127.0.0.1:6379> hget myhash field2 ## 获取myhash 的字段field2的值,提示为不存在
(nil)
127.0.0.1:6379> hset myhash field2 "san" ## 设置键myhash,字段field2的值
(integer) 1
127.0.0.1:6379> hlen myhash ## 显示myhash 的字段数量
(integer) 2
127.0.0.1:6379> hexists myhash field1 ## 查看myhash字段field1是否存在
(integer) 1
127.0.0.1:6379> hdel myhash field1 ## 删除myhash字段field1
(integer) 1
127.0.0.1:6379> hdel myhash field1 ## myhash字段field1,显示不成功,之前已删除
(integer) 0
127.0.0.1:6379> hexists myhash field1 ## 查看myhash字段field1是否存在,返回码为0,表示不存在
(integer) 0
127.0.0.1:6379> hsetnx myhash field1 "zhang" ## 检测myhash是否存在field1,返回值为1,表示不存
## 在且已创建
(integer) 1
127.0.0.1:6379> hsetnx myhash field1 "zhang" ## 返回值为0,表示才存在,命令不执行
(integer) 0
7、hincrby:给键的字段的值加1
8、hgetall:获取键的所有字段及其值
9、hkeys:获取键中所有字段的名字
10、hvals:获取键中所有字段的值
11、 hmset:批量设置键的字段值
12、hmget:批量获取键的字段值
127.0.0.1:6379> hmset myhash field1 "hello" field2 "world"
## 为键myhash,一次性设置多个字段,分别是field1="hello",field2="world"
OK
127.0.0.1:6379> hmget myhash field1 field2 ##获取myhash键的多个字段
1) "hello"
2) "world"
127.0.0.1:6379> hgetall myhash ##获取myhash键的所有字段
1) "field1"
2) "hello"
3) "field2"
4) "world"
127.0.0.1:6379> hkeys myhash ##获取myhash键中所有字段的名字
1) "field1"
2) "field2"
127.0.0.1:6379> hvals myhash ## 获取myhash键中所有字段的值
1) "hello"
2) "world"