Redis基础篇11 — 使用命令(三)对 value 的操作命令

hash 数据类型简介

Q:Redis 当中的 hash 数据类型是什么?
简单来说,就是 value 里面再套一个或多个 key-value 对象。

在前面,我们说 string 类型时提到,一个 key 对应一个 value:

key <---> value

而针对 hash,它的对照关系为:

key <---> value
           ↓
     key1-value1(或 field1-value1)
     key2-value2(或 field2-value2)
     ...

为了与整体的 key 名称做区分,hash 数据类型中的 key 被称为 field(字段)。请注意!field 和 value 一 一 对应,不允许重复。

比如写入数据的这样一个例子:

192.168.100.3:6379> select 1
192.168.100.3:6379[1]> hset user:1  name Cao  age 20  sex  man
192.168.100.3:6379[1]> hset user:2  name Zhao  age 19  sex  woman

如您所见的那样,当您需要使用 Redis 与现实世界中的对象(人、物、事、订单等)属性进行关联时,使用 hash 数据类型是一个不错的选择。

hset 命令和 hsetnx 命令

该命令用来为 key 的 value 设置 hash 数据类型,基本用法为:

192.168.100.3:6379[1]> help hset

    HSET key field value [field value ...]
    summary: Creates or modifies the value of a field in a hash.
    since: 2.0.0
    group: hash

如果要更加安全的使用 hash 数据类型,您可以使用 hsetnx 命令作为替代,即当一个 field 不存在时,才将 field-value 写入到 DB 中(写入成功后,命令返回 1,写入不成功,命令执行后返回 0)

192.168.100.3:6379[1]> hsetnx user:1  student yes
(integer) 1
192.168.100.3:6379[1]> hsetnx user:1 student no
(integer) 0

如果一个 field 存在,hset 命令也能用于更新 field-value 中的 value,比如 hset user:1 student no

hget 命令 和 hmget 命令

# 如果要获取单个 key 中单个 field 的 value ,可使用 `hget` 命令,如下:
192.168.100.3:6379[1]>  hget user:1 age
"20"

# 如果要获取单个 key 中多个 field 的 value ,可使用 `hmget` 命令,如下:
192.168.100.3:6379[1]> hmget user:1 age name sex
1) "20"
2) "Cao"
3) "man"

hgetall 命令

查看单个 key 当中的所有 field-value

192.168.100.3:6379[1]> hgetall user:1
1) "name"
2) "Cao"
3) "age"
4) "20"
5) "sex"
6) "man"
7) "student"
8) "no"

hkeys 命令

针对 hash 数据类型,查看单个 key 当中所有的 field

192.168.100.3:6379[1]> hkeys user:1
1)  "name"
2)  "age"
3)  "sex"
4)  "student"

hvals 命令

针对 hash 数据类型,查看单个 key 当中的所有 value。

192.168.100.3:6379[1]> HVALS user:1
1)  "Cao"
2)  "20"
3)  "man"
4)  "no"

hexists 命令

针对 hash 数据类型,用于判断单个 key 当中的一个 field 是否存在。

192.168.100.3:6379[1]> hexists user:1 class
(integer) 0

hdel 命令

用于删除单个 key 当中的一个或多个 field。

192.168.100.3:6379[1]> hdel user:1 name age sex
(integer) 3

192.168.100.3:6379[1]> hgetall user:1
1) "student"
2) "no"

将数据重新补上,方便后面演示

192.168.100.3:6379[1]> hset user:1 name Cao age 20 sex man
(integer) 3

192.168.100.3:6379[1]> hgetall user:1
1) "student"
2) "no"
3) "name"
4) "Cao"
5) "age"
6) "20"
7)  "sex"
8) "man"

hlen 命令

用于获取单个 key 当中 field-value 对的数量。

192.168.100.3:6379[1]> hlen user:1
(integer) 4

hstrlen 命令

针对 hash 数据类型,返回特定 field 的 value 的长度。一个数字、一个字母、一个英语标点算 1 个长度。

192.168.100.3:6379[1]> hstrlen user:1 name
(integer) 3

hincrby 命令

针对 hash 数据类型,如果单个 field 的 value 是数值型,为 field 的 value 自增(正整数时)或自减(负整数时)。比如:

192.168.100.3:6379[1]> hincrby user:1 age 3
(integer) 23
192.168.100.3:6379[1]> HINCRBY user:1 age -2
(integer) 21

hincrebyfloat 命令

针对 hash 数据类型,如果单个 field 的 value 是数值型,为 field 的 value 自增(正整数或正小数时)或自减(负整数或负小数时)。比如:

192.168.100.3:6379[1]> HINCRBYFLOAT user:1 age -1.5
"19.5"
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇