在Heroku雲端平台使用Redis記憶體資料庫(三):操作雜湊(hash)資料

操作雜湊(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個欄位的命令如下:

執行HMSET命令

HSET命令兼具新增更新欄位值的用途,若指定欄位不存在則新增一個,否則更新欄位值。底下敘述將更新phone雜湊的ROM欄位值:

執行HSET命令

HGET命令可取得欄位值;Redis的鍵和欄位名稱都是英文大小寫有別,如果查不到指定的欄位,它將傳回nil(空)

Redis CLI的命令則是大小寫不分,所以“HGET”命令也可以寫成“hget”。

HGETALL命令可取得所有指定鍵名的欄位和值:

執行HGETALL命令

透過HEXISTS命令(“exist”代表「存在」)判斷雜湊的一個欄位是否存在,若存在傳回1,否則傳回0:

HEXISTS命令

HDEL命令刪除一個欄位,傳回1代表刪除成功:

HDEL命令

HSETNX命令代表“hash set if Not eXist”:如果欄位不存在則新增欄位並設定值;新增成功則傳回1,若沒有新增則傳回0。

HSETNX命令

模擬存取陣列物件資料

在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]。

JavaScript的物件陣列

Redis雜湊的鍵和欄位名稱只能是字串,無法像JavaScript那樣透過陣列存取。為了在Redis中營造出陣列那樣,存取「一組相關物件資料」的語法,人們習慣採用如下的命名格式:用相同的名稱起頭,後面跟著冒號,再加上虛構的索引編號。

在Redis中存取一組相關物件資料

實際的Redis CLI命令操作如下:

執行HMSET命令

執行KEYS *命令可查看目前的Redis資料庫的全部鍵名,從中可看到剛剛新增的兩個鍵。

執行KEYS *命令

關於Redis的雜湊(hash)類型的介紹到此先告一段落。

Posts created 483

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top