hscan

1. 基本語法

hscan(hkey, cursor, ['MATCH', pattern], ['COUNT', count],callback)

針對hkey資料進行漸進式的遍歷(Traversal)取值,透過MATCH參數篩選欄位(Sub-Key)資料,該指令不保證回傳的鍵值對(Sub-Key : Value)數量,但可透過COUNT制定最少的回傳數目,並透過新的cursor來取得下一群資料內容,當cursor等於'0'時,代表遍歷已結束。

Parameter

Default

pattern

'*'

count

'10'

以下兩者任一成立時,COUNT參數才會發會作用。

  • hkey中的鍵值對(Sub-Key : Value)數量超過512的時候。

  • hkey中任意一個欄位(Sub-Key)對應的資料(Value)長度超過64。

2. 範例

(1) 預設參數會試圖取得所有hkey資料

hkey對應欄位(Sub-Key)過多,則先回傳部分資料及非零cursor,並得以透過新cursor取得下一組hkey資料

const dict = { 
    name: 'John Miller', 
    gender: 'M', 
    age: '34',
    hobby1 : 'Whistle',
    hobby2 : 'War',
    hobby3 : 'Walk'
};

client.hmset('user:5', dict);

let cursor = '0';
client.hscan('user:5', cursor , (err, scanner) => {
    cursor = scanner[0];
    let kv_list = scanner[1];
    console.log('Cursor:', cursor);
    console.log('Data:', kv_list);
});
Cursor: 0
Data: [
  'name',   'John Miller',
  'gender', 'M',
  'age',    '34',
  'hobby1', 'Whistle',
  'hobby2', 'War',
  'hobby3', 'Walk'
]

注意回傳結果為Array形式

(2) 模糊篩選subkey

let cursor = '0';
client.hscan('user:5', cursor, 'MATCH', 'hobby*', 'COUNT', '10', 
    (err, scanner) => {
        let cursor = scanner[0];
        let kv_list = scanner[1];
        console.log('Next Cursor:', cursor);
        console.log('Cuurent Data:', kv_list);
    }
);
Cursor: 0
Data: [ 'hobby1', 'Whistle', 'hobby2', 'War', 'hobby3', 'Walk' ]

Last updated

Was this helpful?