From 9c3c42f11372047fe9ebac0f26e13bf08ca9d563 Mon Sep 17 00:00:00 2001 From: Aditya Rastogi Date: Tue, 26 Oct 2021 04:13:47 +0530 Subject: [PATCH] Add(examples): Create an example for blPop & lPush (#1696) * Add(examples): Create an example for blPop & lPush Signed-off-by: Aditya Rastogi * Update(examples): fix case, add timeout, update readme Signed-off-by: Aditya Rastogi Closes #1693. --- examples/README.md | 7 ++++--- examples/blocking-list-pop.js | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 examples/blocking-list-pop.js diff --git a/examples/README.md b/examples/README.md index 92f31d4468..353fa55219 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 0000000000..59dde3274a --- /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();