diff --git a/examples/README.md b/examples/README.md index 92f31d4468e..353fa552192 100644 --- a/examples/README.md +++ b/examples/README.md @@ -2,9 +2,10 @@ This folder contains example scripts showing how to use Node Redis in different scenarios. -| File Name | Description | -| ------------------------ | ----------------------------------------------------------------------------- | -| `connect-as-acl-user.js` | Connect to Redis 6 using an ACL user | +| File Name | Description | +|--------------------------|--------------------------------------| +| `connect-as-acl-user.js` | Connect to Redis 6 using an ACL user | +| `blocking-list-pop.js` | Block until an element is pushed to a list | | `lua-multi-incr.js` | Define a custom lua script that allows you to perform INCRBY on multiple keys | ## Contributing diff --git a/examples/blocking-list-pop.js b/examples/blocking-list-pop.js new file mode 100644 index 00000000000..59dde3274a3 --- /dev/null +++ b/examples/blocking-list-pop.js @@ -0,0 +1,32 @@ +// This example shows how to use the blocking LPUSH command. + +// This code shows how to run with isolation the blPop Command to block the script while waiting for a value to be pushed to the list. +// The script will be blocked until the LPUSH command is executed. +// After which we log the list and quit the client. + +import { createClient, commandOptions } from 'redis'; + +async function blockingListPop() { + const client = createClient(); + + await client.connect(); + + const keyName = 'keyName'; + + const blpopPromise = client.blPop( + commandOptions({ isolated: true }), + keyName, + 0 + ); + + await client.lPush(keyName, 'value'); + + await blpopPromise; + + console.log('blpopPromise resolved'); + console.log(keyName); + + await client.quit(); +} + +blockingListPop();