Skip to content

Implement non atomic RateLimiterRedisNonAtomic#345

Merged
animir merged 2 commits intomasterfrom
redis-non-atomic
Feb 1, 2026
Merged

Implement non atomic RateLimiterRedisNonAtomic#345
animir merged 2 commits intomasterfrom
redis-non-atomic

Conversation

@animir
Copy link
Owner

@animir animir commented Feb 1, 2026

No description provided.

@animir animir requested a review from Copilot February 1, 2026 16:05
@animir animir merged commit 4179826 into master Feb 1, 2026
14 checks passed
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new Redis-backed non-atomic rate limiter implementation and exposes it as part of the public API.

Changes:

  • Introduce RateLimiterRedisNonAtomic store implementation and export it from the package entrypoint.
  • Add TypeScript typings for the new limiter.
  • Add an ioredis-based test suite for RateLimiterRedisNonAtomic and update README + package version.

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
lib/RateLimiterRedisNonAtomic.js Implements non-atomic upsert logic for Redis clients while preserving TTL behavior.
index.js Exports RateLimiterRedisNonAtomic from the library entrypoint.
types.d.ts Adds TypeScript declaration for RateLimiterRedisNonAtomic.
test/RateLimiterRedisNonAtomic.ioredis.test.js Adds basic ioredis coverage for consume/get/set behaviors.
README.md Updates Redis wiki bullet to mention atomic and non-atomic counters.
package.json Bumps package version to 9.1.0.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +7 to +10
this.client = opts.storeClient;
this._rejectIfRedisNotReady = !!opts.rejectIfRedisNotReady;
this.useRedisPackage = opts.useRedisPackage || this.client.constructor.name === 'Commander' || false;
}
Copy link

Copilot AI Feb 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This implementation has client-specific branches (e.g., useRedisPackage toggling pttl vs pTTL and pexpire vs pExpire), but the PR only adds ioredis tests. Please add a RateLimiterRedisNonAtomic.redis.test.js (node-redis) suite similar to test/RateLimiterRedis.redis.test.js to cover the useRedisPackage: true path and ensure compatibility.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant