redis-5.0.4
Redis中的Hash类型可以看成具有String Key和String Value的map容器
添加和删除操作都是O(1)(平均)的复杂度
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)
字符串是一个key对应一个value,value中通常只有一个对应key的数据,而hash中,把很多个数据(field:value)存到一个value中
HSET key field value
参数 | 说明 |
---|---|
HSET | 往redis库中插入一条hash类型的数据 |
key | redis中的键 |
field | hash表中的"键"(唯一) |
value | hash键对应的值 |
127.0.0.1:6379[1]> hset myhash-001 framework tornado
(integer) 0
127.0.0.1:6379[1]> hset myhash-001 framework1 Django
(integer) 1
127.0.0.1:6379[1]> hset myhash-001 framework2 flask
(integer) 1
127.0.0.1:6379[1]> hset myhash-001 framework3 tornado
hgetall key
参数 | 说明 |
---|---|
hgetall | 取出一条hash类型数据中所有field-value对 |
key | redis中的键 |
127.0.0.1:6379[1]> hgetall myhash-001
1) "framework"
2) "tornado"
3) "framework1"
4) "Django"
5) "framework2"
6) "flask"
7) "framework3"
8) "tornado"
hkeys key
参数 | 说明 |
---|---|
hkeys | 取出hash数据中所有fields |
key | redis中的键 |
127.0.0.1:6379[1]> hkeys myhash-001
1) "framework"
2) "framework1"
3) "framework2"
4) "framework3"
hvals key
参数 | 说明 |
---|---|
hvals | 取出hash数据中所有value |
key | redis中的键 |
127.0.0.1:6379[1]> hvals myhash-001
1) "tornado"
2) "Django"
3) "flask"
4) "tornado"
hget key field
参数 | 说明 |
---|---|
hget | 取出hash数据中一个指定field的值 |
key | redis中的键 |
field | hash中的"键"(字段) |
127.0.0.1:6379[1]> hget myhash-001 framework1
"Django"
hincrby key field increment
参数 | 说明 |
---|---|
hincrby | 为哈希表 key 中的指定字段的浮点数值加上增量 increment |
key | redis中的键 |
field | hash中的"键"(字段) |
increment | 增量 |
127.0.0.1:6379[1]> hset myhash-002 age 23
(integer) 1 # 设置age = 23
127.0.0.1:6379[1]> hincrby myhash-002 age 3
(integer) 26 # 为整型age添加增量3
127.0.0.1:6379[1]> hget myhash-002 age
"26" # 获取age数值
hincrbyflost key field increment
参数 | 说明 |
---|---|
hincrbyflost | 为哈希表 key 中的指定字段的浮点数值加上增量 increment |
key | redis中的键 |
field | hash中的"键"(字段) |
increment | 增量 |
hdel key field field2 field3 ...
参数 | 说明 |
---|---|
hdel | 从hash数据中删除一个字段field及其值 |
key | redis中的键 |
field | hash中的"键"(字段) |
127.0.0.1:6379[1]> hgetall myhash-001
1) "framework"
2) "tornado"
3) "framework1"
4) "Django"
5) "framework2"
6) "flask"
7) "framework3"
8) "tornado"
127.0.0.1:6379[1]> hdel myhash-001 framework
(integer) 1
127.0.0.1:6379[1]> hgetall myhash-001
1) "framework1"
2) "Django"
3) "framework2"
4) "flask"
5) "framework3"
6) "tornado"
hmset key field value field1 value1 ...
参数 | 说明 |
---|---|
hmset | 同时将多个 field-value (域-值)对设置到哈希表 key 中 |
key | redis中的键 |
field | hash中的"键"(字段) |
127.0.0.1:6379[1]> hmset myhash-001 name cox age 23 sex male
OK
127.0.0.1:6379[1]> hgetall myhash-001
1) "name"
2) "cox"
3) "age"
4) "23"
5) "sex"
6) "male"
hmget key field field1 ...
参数 | 说明 |
---|---|
hmget | 获取所有给定字段的值 |
key | redis中的键 |
field | hash中的"键"(字段) |
127.0.0.1:6379[1]> hmget myhash-001 name age
1) "cox"
2) "23"
hexists key field
参数 | 说明 |
---|---|
hexists | 获取所有给定字段的值 |
key | redis中的键 |
field | hash中的"键"(字段) |
127.0.0.1:6379[1]> hexists myhash-001 age
(integer) 1
127.0.0.1:6379[1]> hexists myhash-001 haha
(integer) 0