@hono-rate-limiter/redis@0.1.4
latest
A serverless redis store for hono-rate-limiter
This package works with Cloudflare Workers, Node.js, Deno, Bun, Browsers




JSR Score
76%
Published
a year ago (0.1.4)
🔥@hono-rate-limiter/redis🔥
@hono-rate-limiter/redis🔥A serverless redis store for the
hono-rate-limiter
middleware.
Installation
# Using npm/yarn/pnpm/bun npm add @hono-rate-limiter/redis
Usage
Examples
Using with @vercel/kv
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>; };
Usage with connectors
import { kv } from "@vercel/kv"; const store = new RedisStore({ client: kv });
import { Redis } from "@upstash/redis" /** * for Cloudflare * import { Redis } from "@upstash/redis/cloudflare" */ 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
Add Package
deno add jsr:@hono-rate-limiter/redis
Import symbol
import * as redis from "@hono-rate-limiter/redis";
Import directly with a jsr specifier
import * as redis from "jsr:@hono-rate-limiter/redis";
Add Package
pnpm i jsr:@hono-rate-limiter/redis
pnpm dlx jsr add @hono-rate-limiter/redis
Import symbol
import * as redis from "@hono-rate-limiter/redis";
Add Package
yarn add jsr:@hono-rate-limiter/redis
yarn dlx jsr add @hono-rate-limiter/redis
Import symbol
import * as redis from "@hono-rate-limiter/redis";
Add Package
vlt install jsr:@hono-rate-limiter/redis
Import symbol
import * as redis from "@hono-rate-limiter/redis";
Add Package
npx jsr add @hono-rate-limiter/redis
Import symbol
import * as redis from "@hono-rate-limiter/redis";
Add Package
bunx jsr add @hono-rate-limiter/redis
Import symbol
import * as redis from "@hono-rate-limiter/redis";