Product
Introducing Java Support in Socket
We're excited to announce that Socket now supports the Java programming language.
cluster-key-slot
Advanced tools
Generates CRC hashes for strings - for use by node redis clients to determine key slots.
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.
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);
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 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.
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 with NPM:
npm install cluster-key-slot --save
const calculateSlot = require('cluster-key-slot');
const calculateMultipleSlots = require('cluster-key-slot').generateMulti;
// ...
// a single slot number
const slot = calculateSlot('test:key:{butOnlyThis}redis');
// Buffer is also supported
const anotherSlot = calculateSlot(Buffer.from([0x7b, 0x7d, 0x2a]));
// multiple keys - multi returns a single key slot number, returns -1 if any
// of the keys does not match the base slot number (base is defaulted to first keys slot)
// This is useful to quickly determine a singe slot for multi keys operations.
const slotForRedisMulti = calculateMultipleSlots([
'test:key:{butOnlyThis}redis',
'something:key45:{butOnlyThis}hello',
'example:key46:{butOnlyThis}foobar',
]);
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)
FAQs
Generates CRC hashes for strings - for use by node redis clients to determine key slots.
The npm package cluster-key-slot receives a total of 6,556,933 weekly downloads. As such, cluster-key-slot popularity was classified as popular.
We found that cluster-key-slot demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
We're excited to announce that Socket now supports the Java programming language.
Security News
Socket detected a malicious Python package impersonating a popular browser cookie library to steal passwords, screenshots, webcam images, and Discord tokens.
Security News
Deno 2.0 is now available with enhanced package management, full Node.js and npm compatibility, improved performance, and support for major JavaScript frameworks.