目录
- 一、哈希类型:hash
- 一、hash 数据的操作命令
- 1.hset key field value [field value …]
- 2.hget key field
- 3.hmset key field value [field value…]
- 4.hmget key field [field…]
- 5.hgetall key
- 6.hdel key field [field…]
- 7.hlen key
- 8.hexists key field
- 9.hkeys key
- 10.hvals key
- 11.hincrby key field int
- 12.hincrbyfloat key field float
- 13.hsetnx key field value
- 写在最后
一、哈希类型:hash
Redis的 hash 是一个 string 类型的 key 和 value 的映射表,这里的value是一系列的键值对,hash特别适合用于存储对象。
key | field | value |
user1 | username age school | 楚子航 24 卡塞尔学院 |
user2 | username age school | 路明非 21 卡塞尔学院 |
哈希类型的数据操作总的思想是通过key和field操作value,key是数据标识,field是域,value是我们感兴趣的业务数据。
一、hash 数据的操作命令
1.hset key field value [field value …]
功能:将键值对field-value设置到哈希列表key中,如果key不存在,则新建哈希列表,然后执行赋值,如果key下的field已经存在,则value值覆盖。
返回值:返回设置成功的键值对个数。
127.0.0.1:6379> hset stu s1 80 s2 95 s3 98
(integer) 3
2.hget key field
功能:获取哈希表 key 中给定域 field 的值。
返回值:field 域的值;
如果 key 不存在或者 field 不存在返回 nil。
127.0.0.1:6379> hget stu s1
"80"
127.0.0.1:6379> hget stu s5
(nil)
3.hmset key field value [field value…]
功能:同时将多个 field-value (域-值)设置到哈希表 key 中,此命令会覆盖已经存在的 field,hash 表 key 不存在,创建空的 hash 表,再执行 hmset。
返回值:返回设置成功的键值对个数。
127.0.0.1:6379> keys *
1) "stu"
127.0.0.1:6379> hmset stu s1 100
OK
127.0.0.1:6379> hget stu s1
"100"
127.0.0.1:6379> hmset stu1 s1 100
OK
127.0.0.1:6379> keys *
1) "stu"
2) "stu1"
4.hmget key field [field…]
功能:获取哈希表 key 中一个或多个给定域的值。
返回值:返回和field顺序对应的值;
如果field不存在,返回nil
127.0.0.1:6379> hmget stu s1 s2 s9
1) "100"
2) "95"
3) (nil)
127.0.0.1:6379>
5.hgetall key
功能:获取哈希表 key 中所有的域和值。
返回值:以列表形式返回hash中域和域的值
如果 key 不存在,返回空 hash。
127.0.0.1:6379> keys *
1) "stu"
2) "stu1"
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> hgetall stu
1) "s1"
2) "100"
3) "s2"
4) "95"
5) "s3"
6) "98"
127.0.0.1:6379> hgetall stu2
(empty list or set)
6.hdel key field [field…]
功能:删除哈希表 key 中的一个或多个指定域field,不存在field直接忽略。
返回值:成功删除的field的数量。
127.0.0.1:6379> hgetall stu
1) "s1"
2) "100"
3) "s2"
4) "95"
5) "s3"
6) "98"
127.0.0.1:6379> hdel stu s1 s2
(integer) 2
127.0.0.1:6379> hgetall stu
1) "s3"
2) "98"
7.hlen key
功能:获取哈希表 key 中域 field 的个数。
返回值:数值,field的个数;
key不存在返回0。
127.0.0.1:6379> hlen stu
(integer) 1
8.hexists key field
功能:查看哈希表 key 中,给定域 field 是否存在。
返回值:如果field存在,返回1,其他返回0。
127.0.0.1:6379> hexists stu s3
(integer) 1
9.hkeys key
功能:查看哈希表 key 中的所有field域列表。
返回值:包含所有field的列表,key 不存在返回空列表。
127.0.0.1:6379> hkeys stu
1) "s3"
10.hvals key
功能:返回哈希表 中所有域的值列表。
返回值:包含哈希表所有域值的列表,key 不存在返回空列表。
127.0.0.1:6379> hvals stu
1) "98"
11.hincrby key field int
功能:给哈希表 key 中的 field 域增加 int。
返回值:返回增加之后的 field 域的值。
127.0.0.1:6379> hincrby stu s3 2
(integer) 100
12.hincrbyfloat key field float
功能:给哈希表 key 中的 field 域增加 float 。
返回值:返回增加之后的 field 域的值。
127.0.0.1:6379> hincrbyfloat stu s3 2.5
"102.5"
13.hsetnx key field value
功能:将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在的时候才设置,否则不设置。
返回值:设值成功返回1,其他返回0。
127.0.0.1:6379> hsetnx stu s5 2.5
(integer) 1
写在最后
以上关于 Redis 中 hash 类型数据结构的具体内容,后续如果有时间的话我也将持续更新,如果有错误或者是哪里不足的地方,欢迎各位大大提出宝贵的意见呀~