跳到主要内容

[toc]

redis数据类型 hash 字典

hash(字典)简介

简介: 键值对集合,即编程语言中的map类型

可以存储的值: 适合存储对象,并且可以像数据库中的update一样,只修改某一项的属性值

操作: 添加、获取、移除单个键值对,获取所有键值对,检查某个键是否存在

应用场景: 存储、读取、修改用户属性

范围:Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)

使用示例:

#定义一个哈希man,有名字、年龄、体重描述信息
127.0.0.1:6379> HMSET man name "xiaoming" age 18 weight "60kg"
OK
127.0.0.1:6379> HGETALL man
1) "name"
2) "xiaoming"
3) "age"
4) "18"
5) "weight"
6) "60kg"

redis哈希常用命令

hdel key field1 [field2]

含义:删除一个或多个哈希表字段

示例:

127.0.0.1:6379> HMSET man name "xiaoming" age 18 weight "60kg"
OK

127.0.0.1:6379> HGETALL man
1) "name"
2) "xiaoming"
3) "age"
4) "18"
5) "weight"
6) "60kg"

#删除哈希中的weight字段
127.0.0.1:6379> HDEL man weight
(integer) 1

127.0.0.1:6379> HGETALL man
1) "name"
2) "xiaoming"
3) "age"
4) "18"

hexists key field

含义:查看哈希表key中,指定的字段是否存在

示例:

127.0.0.1:6379> HMSET man name "xiaoming" age 18 weight "60kg"
OK
127.0.0.1:6379> HEXISTS man name
(integer) 1
127.0.0.1:6379> HEXISTS man sex
(integer) 0

hget key fidle

含义:获取存储在哈希表中指定字段的值

示例:

127.0.0.1:6379> HMSET man name "xiaoming" age 18 weight "60kg"
OK

127.0.0.1:6379> HGET man name
"xiaoming"

hincrby key fidle increment

含义:为哈希表key中的指定字段的整数值加上增量 increment

示例:

127.0.0.1:6379> HMSET man name "xiaoming" age 18 weight "60kg"
OK
127.0.0.1:6379> HINCRBY man age 2
(integer) 20
127.0.0.1:6379> HGET man age
"20"

hincrbyfloat key field increment

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

示例:

127.0.0.1:6379> HMSET man name "xiaoming" age 18 weight "60kg"
OK
127.0.0.1:6379> HINCRBYFLOAT man age 0.5
"18.5"
127.0.0.1:6379> HGET man age
"18.5"

hkeys key

含义:获取所有哈希表中的字段

示例:

127.0.0.1:6379> HMSET man name "xiaoming" age 18 weight "60kg"
OK

127.0.0.1:6379> HKEYS man
1) "name"
2) "age"
3) "weight"

hvals key

含义:获取哈希表中所有值

示例:

127.0.0.1:6379> HMSET man name "xiaoming" age 18 weight "60kg"
OK
127.0.0.1:6379> HVALS man
1) "xiaoming"
2) "18"
3) "60kg"

hlen key

含义:获取哈希表中字段的数量

示例:

127.0.0.1:6379> HMSET man name "xiaoming" age 18 weight "60kg"
OK
127.0.0.1:6379> HLEN man
(integer) 3

hmget key field1 [field2]

含义:获取所有给定字段的值

示例:

127.0.0.1:6379> HMSET man name "xiaoming" age 18 weight "60kg"
OK

127.0.0.1:6379> HMGET man name age
1) "xiaoming"
2) "18"

hmset key field1 value1 [field2 value2]

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

示例:

127.0.0.1:6379> HMSET man name "xiaoming" age 18 weight "60kg"
OK

hset key field value

含义:将哈希表key中的字段field的值设为 value

示例:

127.0.0.1:6379> HSET man name "xiaoming"
(integer) 1

hsetnx key field value

含义:只有在字段field不存在时,设置哈希表字段的值

示例:

127.0.0.1:6379> HSETNX hehe name "hehe"
(integer) 1

scan、sscan、hscan、zscan

  • SSCAN 命令、 HSCAN 命令和 ZSCAN 命令的第一个参数总是一个数据库键。
  • SCAN 命令则不需要在第一个参数提供任何数据库键 —— 因为它迭代的是当前数据库中的所有数据库键。

scan cursor [MATCH pattern] [COUNT count]

含义:用于迭代当前数据库中的数据库键

示例:

sscan

含义:用于迭代集合键中的元素

示例:

hscan

含义:用于迭代哈希键中的键值对

示例:

zscan

含义:用于迭代有序集合中的元素(包括元素成员和元素分值)

示例: