<div align="center">
npm install @hono-rate-limiter/redis@hono-rate-limiter/redis🔥sh
Using npm/yarn/pnpm/bun
npm add @hono-rate-limiter/redis
`
Usage
$3
Using with @vercel/kv
`ts
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);
`
$3
#### client
The function used to send commands to Redis. The function signature is as
follows:
`ts
export type RedisClient = {
scriptLoad: (script: string) => Promise;
evalsha: (sha1: string, keys: string[], args: TArgs) => Promise;
decr: (key: string) => Promise;
del: (key: string) => Promise;
};
`
#### Usage with connectors
@vercel/kv
`ts
import { kv } from "@vercel/kv";
const store = new RedisStore({ client: kv });
`
@upstash/redis
`ts
import { Redis } from "@upstash/redis"
/**
* for Cloudflare
* import { Redis } from "@upstash/redis/cloudflare"
*/
const redis = new Redis({
url: ,
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