1. 程式人生 > >理解 Redis(5) - 哈希值

理解 Redis(5) - 哈希值

數據 pre 字段名 指定字段 key 所有 class spa 二維數組

哈希值存儲示意圖:
技術分享圖片
首先, 我想先認真理解一下哈希值的數據結構:
前面講過, redis 存儲的是鍵值對, 鍵永遠都是可以打印的 ASCII 碼, 值是字符串, 或者是以其他形式包裹的字符串. 上兩節介紹了單純字符串值的相關命令, 現在開始接觸第一個所謂的"以其他形式包裹的字符串" --- 哈希值. 大家看上圖中, 哈希值的部分, 一共有4行, 可以看作是一個數組, 裏面包含了4個元素, 再看每一個元素(也就是每一行)都有一個 field 與 value 對應, 可以看作是一個映射(map). 總結, 哈希值的數據結構就是數組包含映射(list > map, 這是從 python 的角度理解的, 如果從 php 的角度, 我覺得有點像是一個二維數組)

下面介紹具體命令.

設置一條哈希數據存儲:

127.0.0.1:6379> hmset stu-1 name max age 16 sex male
OK

獲取值中的某個字段, 要指定字段名:

127.0.0.1:6379> hget stu-1 name
"max"

獲取某個鍵的哈希值的指定字段的值:

127.0.0.1:6379> hmget stu-1 name
1) "max"
127.0.0.1:6379> hmget stu-1 name age
1) "max"
2) "18"

獲取全部的哈希值:

127.0.0.1:6379> hgetall stu-1
1) "name"
2) "max"
3) "age"
4) "16"
5) "sex"
6) "male"

判斷某個鍵的哈希值的某個字段是否存在:

127.0.0.1:6379> hexists stu-1 surname
(integer) 0
127.0.0.1:6379> hexists stu-1 name
(integer) 1

刪除某個鍵的哈希值的某個字段:

127.0.0.1:6379> hdel stu-1 sex
(integer) 1
127.0.0.1:6379> hgetall stu-1
1) "name"
2) "max"
3) "age"
4) "16"

設置某個鍵的哈希值的某個字段:

127.0.0.1:6379> hmset stu-1 sex male
OK
127.0.0.1:6379> hgetall stu-1
1) "name"
2) "max"
3) "age"
4) "16"
5) "sex"
6) "male"

設置某個鍵的哈希值的某個字段前, 先判斷這個字段是否可用, 如果可用則返回1, 表示設置成功, 如果不可用則返回0, 表示設置失敗:

127.0.0.1:6379> hsetnx stu-1 name tom
(integer) 0
127.0.0.1:6379> hsetnx stu-1 surname tom
(integer) 1
127.0.0.1:6379> hsetnx stu-1 class 3
(integer) 1
127.0.0.1:6379> hgetall stu-1
 1) "name"
 2) "max"
 3) "age"
 4) "16"
 5) "sex"
 6) "male"
 7) "class"
 8) "3"
 9) "surname"
10) "tom"

判斷某個鍵的哈希值的某個字段是否存在, 如果存在則返回1:

127.0.0.1:6379> hexists stu-1 class
(integer) 1
127.0.0.1:6379> hget stu-1 class
"3"

獲取某個鍵的所有字段名:

127.0.0.1:6379> hkeys stu-1
1) "name"
2) "age"
3) "sex"
4) "class"
5) "surname"

獲取某個鍵的所有字段的值:

127.0.0.1:6379> hvals stu-1
1) "max"
2) "16"
3) "male"
4) "3"
5) "tom"

以自定義的幅度, 增加某個鍵的哈希值的某個字段的值:

127.0.0.1:6379> hincrby stu-1 age 2
(integer) 18
127.0.0.1:6379> hgetall stu-1
 1) "name"
 2) "max"
 3) "age"
 4) "18"
 5) "sex"
 6) "male"
 7) "class"
 8) "3"
 9) "surname"
10) "tom"

查看某個鍵的哈希值一共有幾個字段:

127.0.0.1:6379> hlen stu-1
(integer) 5

以上, 就是關於哈希值的基本命令, enjoy.....

理解 Redis(5) - 哈希值