操作雜湊(hash)資料
底下是用JavaScript程式建立一個名叫phone的物件變數,在其中儲存3個欄位資料的敘述:
phone = { "name":"Note 8", // 手機名稱 "RAM":"6GB", // 主記憶體 "ROM":"64GB" // 儲存容量 }
然後透過點語法存取欄位:
console.log(phone.name)
在Redis CLI中,使用HSET(代表“hash set”)命令設定一個欄位值,或者HMSET(M代表“multiple”,多個)命令設定多個欄位值。同樣建立一個phone儲存空間並存入3個欄位的命令如下:
HSET命令兼具新增和更新欄位值的用途,若指定欄位不存在則新增一個,否則更新欄位值。底下敘述將更新phone雜湊的ROM欄位值:
HGET命令可取得欄位值;Redis的鍵和欄位名稱都是英文大小寫有別,如果查不到指定的欄位,它將傳回nil(空):
Redis CLI的命令則是大小寫不分,所以“HGET”命令也可以寫成“hget”。
HGETALL命令可取得所有指定鍵名的欄位和值:
透過HEXISTS命令(“exist”代表「存在」)判斷雜湊的一個欄位是否存在,若存在傳回1,否則傳回0:
用HDEL命令刪除一個欄位,傳回1代表刪除成功:
HSETNX命令代表“hash set if Not eXist”:如果欄位不存在則新增欄位並設定值;新增成功則傳回1,若沒有新增則傳回0。
模擬存取陣列物件資料
在JavaScript和Python等程式語言中,我們可以用陣列(或字典)儲存結構化資料,例如,以下的JavaScript程式宣告一個phones陣列,然後在其中儲存了兩筆資料,每一筆資料各自包含3個欄位。
var phones = [] // 宣告空白陣列 phones[0] = { // 第一筆資料 "name":"Note 4", "RAM":"3GB", "ROM":"32GB" } phones[1] = { // 第二筆資料 "name":"Note 8", "RAM":"6GB", "ROM":"64GB" }
底下敘述將顯示第二筆資料的手機名稱:
console.log(phones[1].name) // 顯示"Note 8"
也就是說,JavaScript程式的資料元素識別名稱可以是陣列,像phones[0]和phones[1]。
Redis雜湊的鍵和欄位名稱只能是字串,無法像JavaScript那樣透過陣列存取。為了在Redis中營造出陣列那樣,存取「一組相關物件資料」的語法,人們習慣採用如下的命名格式:用相同的名稱起頭,後面跟著冒號,再加上虛構的索引編號。
實際的Redis CLI命令操作如下:
執行KEYS *命令可查看目前的Redis資料庫的全部鍵名,從中可看到剛剛新增的兩個鍵。
關於Redis的雜湊(hash)類型的介紹到此先告一段落。