Skip to content

Commit

Permalink
Merge pull request redis#972 from VanTanev/improve-scan-example-code
Browse files Browse the repository at this point in the history
Update SCAN example code
  • Loading branch information
BridgeAR committed Feb 10, 2016
2 parents f7f3e9a + 545e723 commit 8a43dea
Showing 1 changed file with 21 additions and 8 deletions.
29 changes: 21 additions & 8 deletions examples/scan.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,33 @@ function scan() {

// Update the cursor position for the next scan
cursor = res[0];
// get the SCAN result for this iteration
var keys = res[1];

// From <http://redis.io/commands/scan>:
// 'An iteration starts when the cursor is set to 0,
// and terminates when the cursor returned by the server is 0.'
if (cursor === '0') {
return console.log('Iteration complete');
}
// Remember: more or less than COUNT or no keys may be returned
// See http://redis.io/commands/scan#the-count-option
// Also, SCAN may return the same key multiple times
// See http://redis.io/commands/scan#scan-guarantees
// Additionally, you should always have the code that uses the keys
// before the code checking the cursor.
if (keys.length > 0) {
console.log('Array of matching keys', keys);
}

if (res[1].length > 0) {
console.log('Array of matching keys', res[1]);
// It's important to note that the cursor and returned keys
// vary independently. The scan is never complete until redis
// returns a non-zero cursor. However, with MATCH and large
// collections, most iterations will return an empty keys array.

// Still, a cursor of zero DOES NOT mean that there are no keys.
// A zero cursor just means that the SCAN is complete, but there
// might be one last batch of results to process.

// From <http://redis.io/commands/scan>:
// 'An iteration starts when the cursor is set to 0,
// and terminates when the cursor returned by the server is 0.'
if (cursor === '0') {
return console.log('Iteration complete');
}

return scan();
Expand Down

0 comments on commit 8a43dea

Please sign in to comment.