哈希值存儲示意圖:首先, 我想先認真理解一下哈希值的數據結構:前面講過, redis 存儲的是鍵值對, 鍵永遠都是可以列印的 ASCII 碼, 值是字元串, 或者是以其他形式包裹的字元串. 上兩節介紹了單純字元串值的相關命令, 現在開始接觸第一個所謂的"以其他形式包裹的字元串" 哈希值. 大家看上圖 ...
哈希值存儲示意圖:
首先, 我想先認真理解一下哈希值的數據結構:
前面講過, 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.....