What is cluster-key-slot?
The cluster-key-slot npm package is designed for calculating the hash slot for a given key in a Redis Cluster. This is crucial for applications that interact with Redis Clusters, as it allows them to determine which node in the cluster is responsible for a given key. By doing so, it enables efficient data access and manipulation within a distributed Redis environment.
What are cluster-key-slot's main functionalities?
Calculate hash slot for a key
This feature allows you to calculate the hash slot for a given key. The code sample demonstrates how to import the cluster-key-slot package, use it to calculate the hash slot for the key 'myKey', and then log the result. This is useful for determining which node in a Redis Cluster will handle the key.
"use strict";
const calculateSlot = require('cluster-key-slot');
const slot = calculateSlot('myKey');
console.log(slot);
Other packages similar to cluster-key-slot
ioredis
ioredis is a robust, performance-focused, and full-featured Redis client for Node.js. It supports Redis Cluster out of the box, including automatic partitioning of commands across the cluster. While cluster-key-slot focuses solely on calculating hash slots, ioredis provides a comprehensive solution for interacting with Redis, including cluster support, which inherently deals with hash slots as part of its functionality.
redis-clustr
redis-clustr is a Redis client for Node.js with support for clustering. It provides transparent command routing to the correct Redis node in a cluster, based on the key's hash slot. Unlike cluster-key-slot, which is a utility for calculating hash slots, redis-clustr is a full client that manages connections and commands within a Redis Cluster, including the calculation and handling of hash slots.
Redis Key Slot Calculator
A high performance redis cluster key slot calculator for node redis clients e.g. node_redis, ioredis and redis-clustr.
This also handles key tags such as somekey{actualTag}
.
Install
Install with NPM:
npm install cluster-key-slot --save
Usage
const calculateSlot = require('cluster-key-slot');
const calculateMultipleSlots = require('cluster-key-slot').generateMulti;
const slot = calculateSlot('test:key:{butOnlyThis}redis');
const anotherSlot = calculateSlot(Buffer.from([0x7b, 0x7d, 0x2a]));
const slotForRedisMulti = calculateMultipleSlots([
'test:key:{butOnlyThis}redis',
'something:key45:{butOnlyThis}hello',
'example:key46:{butOnlyThis}foobar',
]);
Benchmarks
OLD
in these benchmarks refers to the ioredis
crc calc and many of the other calculators that use Buffer
.
node -v ✔ 16.38G RAM 10:29:07
v10.15.3
NEW tags x 721,445 ops/sec ±0.44% (90 runs sampled)
OLD tags x 566,777 ops/sec ±0.97% (96 runs sampled)
NEW without tags x 2,054,845 ops/sec ±1.77% (92 runs sampled)
OLD without tags x 865,839 ops/sec ±0.43% (96 runs sampled)
NEW without tags singular x 6,354,097 ops/sec ±1.25% (94 runs sampled)
OLD without tags singular x 4,012,250 ops/sec ±0.96% (94 runs sampled)
NEW tags (Buffer) x 552,346 ops/sec ±1.35% (92 runs sampled)