Redis 哈希(Hash)使用

版权声明:来自 Cox 的程序员 https://blog.csdn.net/Coxhuang/article/details/89887659

Redis-Hash

#1 环境

redis-5.0.4

#2 Hash

Redis中的Hash类型可以看成具有String Key和String Value的map容器

添加和删除操作都是O(1)(平均)的复杂度

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)

20190506160532-image.png

字符串是一个key对应一个value,value中通常只有一个对应key的数据,而hash中,把很多个数据(field:value)存到一个value中

#3 开始

#3.1 命令

#3.1.1 将哈希表 key 中的字段 field 的值设为 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

20190506162259-image.png


#3.1.2 取出一条hash类型数据中所有field-value对

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"

#3.1.3 取出hash数据中所有fields

hkeys key
参数 说明
hkeys 取出hash数据中所有fields
key redis中的键
127.0.0.1:6379[1]> hkeys myhash-001
1) "framework"
2) "framework1"
3) "framework2"
4) "framework3"

#3.1.4 取出hash数据中所有value

hvals key
参数 说明
hvals 取出hash数据中所有value
key redis中的键
127.0.0.1:6379[1]> hvals  myhash-001
1) "tornado"
2) "Django"
3) "flask"
4) "tornado"

#3.1.5 取出hash数据中一个指定field的值

hget key field
参数 说明
hget 取出hash数据中一个指定field的值
key redis中的键
field hash中的"键"(字段)
127.0.0.1:6379[1]> hget myhash-001 framework1
"Django"

#3.1.6 为哈希表 key 中的指定字段的整型数值加上增量 increment (可以是负数)

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数值

#3.1.7 为哈希表 key 中的指定字段的浮点数值加上增量 increment

hincrbyflost key field increment
参数 说明
hincrbyflost 为哈希表 key 中的指定字段的浮点数值加上增量 increment
key redis中的键
field hash中的"键"(字段)
increment 增量

#3.1.8 从hash数据中删除一个/多个字段field及其值

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"

#3.1.9 同时将多个 field-value (域-值)对设置到哈希表 key 中

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"

#3.1.10 获取所有给定字段的值

hmget key field field1 ...
参数 说明
hmget 获取所有给定字段的值
key redis中的键
field hash中的"键"(字段)
127.0.0.1:6379[1]> hmget myhash-001 name age
1) "cox"
2) "23"

#3.1.11 判断某个field是否存在,存在则返回1,否则返回0

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

猜你喜欢

转载自blog.csdn.net/Coxhuang/article/details/89887659