【Redis之Hash类型的详解Hash类型中常用命令的实践】
Redis之Hash类型的详解&Hash类型中常用命令的实践
前面我们通过对Redis中的String的命令做了充分的讲解以及实践学习以及通过对Redis中String类型之Bit命令的详解以及Bit命令的实践进行了学习,接下来我们学习Redis中的Hash类型以及Hash中常用命令的实践学习。
Redis中String类型内容请看这里呦:
【Redis之String类型的详解&String类型中常用命令的实践】
Redis中String类型是Bit命令内容请看这里呦:
【Redis中String类型之Bit命令的详解&Bit命令的实践】
Hash的基本介绍
Hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)。
Redis中Hash中常用的命令
Hash中常用的命令 | 备注说明 |
---|---|
hset | 设置key中字段的值 |
hget | 获取key中字段的值 |
hmset | 批量设置key中的字段 |
hmget | 批量获取key中字段的值 |
hdel | 删除key中指定的字典 |
hsetnx | 设置key中的字段的值,如果字段存在就忽略 |
hvals | 获取key中所有的字段的值 |
hkeys | 获取key中的所有的字段 |
hgetall | 获取key中的所有的字段及值 |
hexists | 判断key中的字段是否存在 |
hincrby | 将key中的字段增加特定的值 |
hincrbyfloat | 和hincrby类似增加的float类型的数据 |
hlen | 获取key中的字段的个数 |
hstrlen | 获取key中某个字段的值得长度 |
Redis中Hash命令的格式
hash中常用的命令 key(整个key,包含许多key、value) field1(小key) value1(与小key对应的value) field2 value2…
hset命令
给hash集合中的key,对应的field键赋值value(可以同时设置多个)
127.0.0.1:6379> hset student username xiaoming password 123456
(integer) 2
127.0.0.1:6379>
hget命令
获取该集合中field对应的value值
127.0.0.1:6379> hget student username
"xiaoming"
127.0.0.1:6379> hget student password
"123456"
hmset命令
hmset命令用来批量设置对应的key中的字段的值
127.0.0.1:6379> hmset student1 username zhangsan password 123 age 18
OK
hmget命令
hmset命令用来批量取出对应的key中的字段的值
127.0.0.1:6379> hmget student1 username password age
1) "zhangsan"
2) "123"
3) "18"
127.0.0.1:6379>
hdel命令
hdel命令可以移除指定的key中对应的字段,如果字段不存在则忽略。
127.0.0.1:6379> hmget student1 username password age
1) "zhangsan"
2) "123"
3) "18"
127.0.0.1:6379> hdel student1 age 18
(integer) 1
127.0.0.1:6379> hmget student1 username password
1) "zhangsan"
2) "123"
127.0.0.1:6379> hmget student1 age
1) (nil)
127.0.0.1:6379>
hsetnx命令
如果设置的字段不存在就设置值,如果存在就忽略。
127.0.0.1:6379> hmget student1 username password
1) "zhangsan"
2) "123"
127.0.0.1:6379> hsetnx student1 age 18
(integer) 1
127.0.0.1:6379> hmget student1 username password age
1) "zhangsan"
2) "123"
3) "18"
127.0.0.1:6379>
hvals命令
hvals可以返回指定的key中所有字段的值
127.0.0.1:6379> hvals student1
1) "zhangsan"
2) "123"
3) "18"
127.0.0.1:6379>
hkeys命令
hkeys命令可以获取指定的key中的所有的字段信息。
127.0.0.1:6379> hkeys student1
1) "username"
2) "password"
3) "age"
127.0.0.1:6379>
hgetall命令
hgetall命令可以获取指定key中的所有的字段和对应的值,返回的形式是先返回字段然后是对应的值,所以返回的数据的长度是本身长度的两倍。
127.0.0.1:6379> hvals student1
1) "zhangsan"
2) "123"
3) "18"
127.0.0.1:6379> hkeys student1
1) "username"
2) "password"
3) "age"
127.0.0.1:6379> hgetall student1
1) "username"
2) "zhangsan"
3) "password"
4) "123"
5) "age"
6) "18"
127.0.0.1:6379>
hexists命令
hexists用来判断指定的key中是否还有某字段,有返回1,没有返回0。
127.0.0.1:6379> hgetall student1
1) "username"
2) "zhangsan"
3) "password"
4) "123"
5) "age"
6) "18"
127.0.0.1:6379> hexists student1 username
(integer) 1
127.0.0.1:6379> hexists student1 password
(integer) 1
127.0.0.1:6379> hexists student1 age
(integer) 1
127.0.0.1:6379> hexists student1 sex
(integer) 0
127.0.0.1:6379>
hincrby命令
hincrby用来增加指定的key中的某字段的值,如果字段不存在,则会创建字段与key关联,默认值为0然后增加相关数据。如果字段对应的值不是数字则报错。
127.0.0.1:6379> hincrby student1 age 2
(integer) 20
127.0.0.1:6379> hincrby student1 username 2
(error) ERR hash value is not an integer
127.0.0.1:6379>
hincrbyfloat命令
hincrbyfloat用来增加指定的float类型的值,key中的某字段的值,如果字段不存在,则会创建字段与key关联,默认值为0然后增加相关数据。如果字段对应的值不是数字则报错。
127.0.0.1:6379> hincrbyfloat student1 age 2.2
"22.2"
127.0.0.1:6379> hincrbyfloat student1 username 2.2
(error) ERR hash value is not a float
127.0.0.1:6379>
hlen命令
hlen命令获取的是指定的key下的字段的个数。
127.0.0.1:6379> hlen student1
(integer) 3
127.0.0.1:6379> hkeys student1
1) "username"
2) "password"
3) "age"
127.0.0.1:6379>
hstrlen
strlen获取指定key下的字段的值的长度。
127.0.0.1:6379> hgetall student1
1) "username"
2) "zhangsan"
3) "password"
4) "123"
5) "age"
6) "22.2"
127.0.0.1:6379> hstrlen student1 username
(integer) 8
127.0.0.1:6379> hstrlen student1 password
(integer) 3
127.0.0.1:6379> hstrlen student1 age
(integer) 4
127.0.0.1:6379>