@hono-rate-limiter/redis
TypeScript icon, indicating that this package has built-in type declarations

0.1.3 • Public • Published

@hono-rate-limiter/redis

tests npm version npm downloads license


A serverless redis store for the hono-rate-limiter middleware.

Installation

# Using npm/yarn/pnpm
npm add @hono-rate-limiter/redis

Usage

Examples

To use it with a @vercel/kv client:

import { RedisStore } from "@hono-rate-limiter/redis";
import { kv } from "@vercel/kv";
import { rateLimiter } from "hono-rate-limiter";

const limiter = rateLimiter({
  windowMs: 15 * 60 * 1000, // 15 minutes
  limit: 100, // Limit each IP to 100 requests per `window` (here, per 15 minutes).
  standardHeaders: "draft-6", // draft-6: `RateLimit-*` headers; draft-7: combined `RateLimit` header
  keyGenerator: (c) => c.req.header("cf-connecting-ip") ?? "", // Method to generate custom identifiers for clients.
  store: new RedisStore({ client: kv }), // Redis, MemoryStore, etc. See below.
});

// Apply the rate limiting middleware to all requests.
app.use(limiter);

Configuration

client

The function used to send commands to Redis. The function signature is as follows:

export type RedisClient = {
  scriptLoad: (script: string) => Promise<string>;
  evalsha: <TArgs extends unknown[], TData = unknown>(sha1: string, keys: string[], args: TArgs) => Promise<TData>;
  decr: (key: string) => Promise<number>;
  del: (key: string) => Promise<number>;
};

Examples

@vercel/kv

import { kv } from "@vercel/kv";

const store = new RedisStore({ client: kv });

@upstash/redis

import { Redis } from "@upstash/redis"

const redis = new Redis({
url: <UPSTASH_REDIS_REST_URL>,
token: <UPSTASH_REDIS_REST_TOKEN>,
})

const store = new RedisStore({ client: redis })

prefix

The text to prepend to the key in Redis.

Defaults to hrl:.

resetExpiryOnChange

Whether to reset the expiry for a particular key whenever its hit count changes.

Defaults to false.

Contributing

We would love to have more contributors involved!

To get started, please read our Contributing Guide.

Credits

The @hono-rate-limiter/redis project is heavily inspired by rate-limit-redis

Package Sidebar

Install

npm i @hono-rate-limiter/redis

Weekly Downloads

30

Version

0.1.3

License

MIT

Unpacked Size

13 kB

Total Files

9

Last publish

Collaborators

  • mathuraditya724