11. Redis 五种数据类型-哈希Hash
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了11. Redis 五种数据类型-哈希Hash,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5893字,纯文字阅读大概需要9分钟。
内容图文
![11. Redis 五种数据类型-哈希Hash](/upload/InfoBanner/zyjiaocheng/893/b2de704aeae94fc1b82e6fa98094f4ba.jpg)
Redis 数据类型-Hash
Redis 中每一个hash 就是一个微缩的memercached, 存储无序的散列列表.hash 中field 不能重复, value 可与重复.
1. 常用命令
此API 只适用于hash 结构的key,否则会报错.
操作命令 | 描述 | 返回值 |
---|---|---|
hset $key $field $value | 设置指定key中的键值对 | 如果key 不存在则自动创建hash,如果field 存在,则直接覆盖.正常返回1 |
hget $key $field | 获取指定key 中的field 对应的value | 如果key 或 field 不存在,则返回nil. 否则返回对应的value |
hmset $key $field value[field $value …] | 批量设置指定key 中的键值对 | 如果field 不存在则新增, 否则覆盖更新.正常返回OK |
hmget $key field[field…] | 批量获取指定key中field对应的value | |
hkeys $key | 获取名为key的hash中所有field 组成的列表 | 当key不存在的时候, 返回空的列表; 否则返回由field 组成的列表 |
hvals $key | 获取名为key的hash中所有value 组成的列表 | 当key不存在的时候, 返回空的列表; 否则返回有所有value 组成的列表 |
hgetall $key | 获取名为key的的hash中所有的key-value 所组成的列表 | 当key不存在的时候,返回空的列表; 否则返回所有的key 和 value 组成的列表 |
hlen $key | 获取名为key的hash中键值对的数量 | 若key不存在返回0,否则返回当前hash 的大小 |
hexists $key $field | 判断名为key的hash 中是否包含指定field的键值对 | 若包含返回1,否则返回0;若key不存在则返回0 |
hdel $key field[field…] | 移除名为key的hash中field 对应的键值对,支持批量操作 | 若key不存在返回0,否则返回真实移除的field的数量 |
hstrlen $key $field | 获取名为key的hash中field对应的value的字符长度 | 若key或field不存在则返回0,否则返回value 对应的字符长度 |
hincrby $key $field $increment | 为整数value 改变大小, 原子操作 | 若key或field 不存在则会自动创建, 返回更改后的值 |
hincrbyfloat $key $field $increment | 为整数或浮点数的的value 改变大小, 原子操作 | 若key或field 不存在则会自动创建, 返回更改后的值 |
hsetnx $key $field $value | 当hash 中不存在field 时创建成功, 否则创建失败 | 成功返回1,否则返回0 |
1.1 hset
- 命令格式: hset $key $field
127.0.0.1:6379> hset dict A aa
(integer) 1
1.2 hget
获取hash 中field 对应的value.
- 命令格式: hget $key $field
# key 和 field 都存在的时候,返回field 对应的value
127.0.0.1:6379> hget dict A
"aa"
# 当key 或 field 不存在的时候,返回nil
127.0.0.1:6379> hget dict B
(nil)
1.3 hmset
批量设置hash 中的field-value 对.
- 命令格式: $hmset $field value[field $value …]
127.0.0.1:6379> hmset dict B bb C cc
OK
1.4 hmget
批量获取hash 中多个field 对应的value, 返回列表.
- 命令格式: $hmget $key field[field…]
127.0.0.1:6379> hmget dict A B C
1) "aa"
2) "bb"
3) "cc"
1.5 hkeys
获取hash中所有key 组成的列表.
- 命令格式: hkeys $key
# 当key 存在时,返回hash 中所有key 组成的列表
127.0.0.1:6379> hkeys dict
1) "A"
2) "B"
3) "C"
# 当key 不存在时,返回空列表
127.0.0.1:6379> hkeys dict2
(empty list or set)
1.6 hvals
获取hash中所有的value 组成的列表.
- 命令格式: hvals $key
# 当key 存在时,返回hash 中所有vals 组成的列表.此处是列表并不是集合,可以有重复的数据.
127.0.0.1:6379> hvals dict
1) "aa"
2) "bb"
3) "cc"
# 当key 不存在的时候,返回空列表
127.0.0.1:6379> hvals dict2
(empty list or set)
1.7 hgetall
获取hash中所有field,value 组成的列表.
- 命令格式: hgetall $key
# 虽然hash 中只有三组键值对,但是却返回了一个长度为6的列表. 因为此命令会将一组key-value 当作是两个元素来放到列表中.
127.0.0.1:6379> hgetall dict
1) "A"
2) "aa"
3) "B"
4) "bb"
5) "C"
6) "cc"
1.8 hlen
获取hash 的键值对数, 当key 不存在时返回0;
- 命令格式: hlen $key
127.0.0.1:6379> hlen dict
(integer) 3
127.0.0.1:6379> hlen dict2
(integer) 0
1.9 hexists
判断名为key 的hash 中是否存在指定field, 存在返回1, 否则返回0.
- 命令格式: hexists $key $field
# dict 中存在field 为A 的键值对, 返回1
127.0.0.1:6379> hexists dict A
(integer) 1
# dict 中不存在field 为e 的键值对, 返回0
127.0.0.1:6379> hexists dict e
(integer) 0
# 对于不存在的key 则返回0
127.0.0.1:6379> hexists dict2 e
(integer) 0
1.10 hdel
移除hash 中的键值对,支持批量操作. 返回实际删除的键值对的个数.
- 命令格式: hdel $key field[field…]
# 由于dict中并没有e,f 的键值对,所以返回的是2而不是4.
127.0.0.1:6379> hdel dict A B e f
(integer) 2
# 当key不存在的时候,返回0
127.0.0.1:6379> hdel dict2 A
(integer) 0
1.11 hstrlen
获取指定field 对应的value 的字符长度.当key 或field 不存在的时候返回0, 否则返回value 的字符长度.
- 命令格式: hstrlen $key $field
# 当key和field 都存在时,返回field对应的value 的字符长度
127.0.0.1:6379> hstrlen dict A
(integer) 2
# 当key 或field 不存在时,返回0
127.0.0.1:6379> hstrlen dict e
(integer) 0
1.12 hincrby
对value 为整数的field,添加指定的increment.
- 命令格式: hincrby $key $field $increment
- 若field 不存在, 则新增field, field 初始值为increment
- 若key 不存在, 则新增hasn, 并创建key-value
# 当key 和value 存
127.0.0.1:6379> hmset dict A 65 B 66.0 C cc
OK
# 当key 和field 存在且value 为整数时, 对应的value 增加increment; 返回新增后的value
127.0.0.1:6379> hincrby dict A 30
(integer) 95
127.0.0.1:6379> hget dict A
"95"
# 当value 不为整数时, 报错
127.0.0.1:6379> hincrby dict B 30
(error) ERR hash value is not an integer
1.13 hincryfloat
对value 为数字的field,添加指定的increment.
- 命令格式: hincrby $key $field $increment
- 若field 不存在, 则新增field, field 初始值为increment
- 若key 不存在, 则新增hasn, 并创建key-value
- 若对value为整数的field新增浮点型数字, 则会将value 转化为浮点数, 则不能再用hincrby 操作
# 对浮点数value 新增
127.0.0.1:6379> hincrbyfloat dict B 2.5
"68.5"
# 对蒸熟value 新增浮点数, 则会将value 转换为浮点数, 不能再用hincrby 操作.
127.0.0.1:6379> hincrbyfloat dict A 3.5
"98.5"
127.0.0.1:6379> hincrby dict A 3
(error) ERR hash value is not an integer
1.14 hsetnx
如果hash 中不存在此field, 则创建field-value 键值对, 否则不创建.创建失败返回0, 否则返回1.
- 命令格式: hsetnx $key $field $value
127.0.0.1:6379> hmset dict A aa B bb C cc
OK
## hash 中已经存在field A,所以创建失败, 返回0
127.0.0.1:6379> hsetnx dict A 123
(integer) 0
127.0.0.1:6379> hget dict A
"aa"
# hash 中不存在field E, 所以创建成功, 返回1
127.0.0.1:6379> hsetnx dict E ee
(integer) 1\
2. 不常用命令
SCAN 命令及其相关的 SSCAN, HSCAN 和 ZSCAN 命令都用于增量迭代一个集合元素。此命令并不常用
- SCAN 命令用于迭代当前数据库中的key集合。
- SSCAN 命令用于迭代SET集合中的元素。
- HSCAN 命令用于迭代Hash类型中的键值对。
- ZSCAN 命令用于迭代SortSet集合中的元素和元素对应的分值
内容总结
以上是互联网集市为您收集整理的11. Redis 五种数据类型-哈希Hash全部内容,希望文章能够帮你解决11. Redis 五种数据类型-哈希Hash所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。