How to get values from all redis slots in node js?

Viewed 535

I am trying to get all keys from redis, but I am running into an issue where some keys are being saved in a different slot and I am not able to fetch them, after some research I knew that redis hashes the keys and then decides where to store the key (in which slot).

redisConnect.js

const { nodes, options } = require("./redisConfig");
const chalk = require("chalk");

const redis =
  process.env.NODE_ENV === "dev"
    ? new Redis()
    : new Redis.Cluster(nodes, options);

redis.on("connect", () => {
  console.log(chalk.blue(`Redis status: ${redis.status}`));
});

redis.on("close", () => {
  console.log(chalk.red("Redis closed"));
});

redis.on("error", (err) => {
  console.log(chalk.red(err));
});

redis.on("reconnecting", () => {
  console.log(chalk.yellow("Redis reconnecting"));
});

module.exports = redis;

redisConfig.js

const nodes = [
    {
        port: 6379,
        host: "hostname"
    }
];

const options = {
    enableReadyCheck: true,
    
};

module.exports = { nodes, options };

I am running redis on AWS ElastiCache 3 shardes (9 nodes)

This is what i get when I try to fetch keys:

  'firebaseToken-driverID:61850d30033c84316bda42a5',
  'firebaseToken-vendorID:hassan-chocolate-factory',
  'firebaseToken-driverID:61af31f241bbcd63068736a4',
  'firebaseToken-driverID:61b31880e85415fd3a2b3a0f-undefined',
  'firebaseToken-vendorID:test-7f9fdeb0bc911187',
  'firebaseToken-vendorID:saha',
  'firebaseToken-vendorID:blessing',
  'firebaseToken-vendorID:test-1ba3f58016c66903'

but what is stored actually in all slots is:

drivers
firebaseToken-driverID:617a784e2fa14ec9dfe7b0a1-undefined
users
firebaseToken-vendorID:test-undefined
firebaseToken-vendorID:test-D549DE57-6968-4D7A-AE4B-1948016421A1
firebaseToken-vendorID:test-A52E725F-7B6B-452E-960D-90D9B6C41127
firebaseToken-vendorID:test
tasks
firebaseToken-vendorID:hassan-chocolate-factory
vendorsList
vendor:undefined
firebaseToken-vendorID:blessing
firebaseToken-driverID:61850d30033c84316bda42a5
firebaseToken-vendorID:test-7f9fdeb0bc911187
firebaseToken-vendorID:test-1ba3f58016c66903
firebaseToken-vendorID:saha
firebaseToken-driverID:61af31f241bbcd63068736a4
firebaseToken-driverID:61b31880e85415fd3a2b3a0f-undefined
firebaseToken-vendorID:test
tasks
firebaseToken-vendorID:test
tasks
firebaseToken-vendorID:blessing
firebaseToken-vendorID:saha
firebaseToken-driverID:61af31f241bbcd63068736a4
firebaseToken-driverID:61850d30033c84316bda42a5
vendor:undefined
firebaseToken-vendorID:hassan-chocolate-factory
firebaseToken-vendorID:test-7f9fdeb0bc911187
firebaseToken-vendorID:test-1ba3f58016c66903
vendorsList
firebaseToken-driverID:61b31880e85415fd3a2b3a0f-undefined
firebaseToken-vendorID:test-D549DE57-6968-4D7A-AE4B-1948016421A1
vendors
firebaseToken-vendorID:test-undefined
firebaseToken-vendorID:test-A52E725F-7B6B-452E-960D-90D9B6C41127
drivers
firebaseToken-driverID:617a784e2fa14ec9dfe7b0a1
users
firebaseToken-driverID:617a784e2fa14ec9dfe7b0a1-undefined
firebaseToken-driverID:61850d30033c84316bda42a5
firebaseToken-vendorID:hassan-chocolate-factory
firebaseToken-driverID:61af31f241bbcd63068736a4
firebaseToken-driverID:61b31880e85415fd3a2b3a0f-undefined
firebaseToken-vendorID:test-7f9fdeb0bc911187
vendor:undefined
firebaseToken-vendorID:saha
firebaseToken-vendorID:blessing
firebaseToken-vendorID:test-1ba3f58016c66903
firebaseToken-vendorID:test-A52E725F-7B6B-452E-960D-90D9B6C41127
firebaseToken-driverID:617a784e2fa14ec9dfe7b0a1-undefined
vendors
firebaseToken-driverID:617a784e2fa14ec9dfe7b0a1
drivers
firebaseToken-vendorID:test-D549DE57-6968-4D7A-AE4B-1948016421A1
firebaseToken-vendorID:test-undefined

How can I fetch all keys or data from all redis slots using ioredis?

1 Answers
Related