rate-limit-memcached
Version:
A memcached store for the express-rate-limit middleware.
129 lines (88 loc) • 3.81 kB
Markdown
<div align="center">
[](https://github.com/express-rate-limit/rate-limit-memcached/actions/workflows/ci.yaml)
[](https://npmjs.org/package/rate-limit-memcached 'View this project on NPM')
[](https://www.npmjs.com/package/rate-limit-memcached)
A [`memcached`](https://memcached.org) store for the
[`express-rate-limit`](https://github.com/express-rate-limit/express-rate-limit)
middleware.
</div>
From the npm registry:
```sh
> npm install express-rate-limit
> yarn/pnpm add express-rate-limit
```
From Github Releases:
```sh
> npm install https://github.com/express-rate-limit/rate-limit-memcached/releases/download/v{version}/rate-limit-memcached.tgz
> yarn/pnpm add https://github.com/express-rate-limit/rate-limit-memcached/releases/download/v{version}/rate-limit-memcached.tgz
```
Replace `{version}` with the version of the package that you want to your, e.g.:
`1.0.0`.
**This package requires you to use Node 16 or above.**
An example of its usage is as follows:
```ts
import { rateLimit } from 'express-rate-limit'
import { MemcachedStore } from 'rate-limit-memcached'
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes.
max: 100, // Limit each IP to 100 requests per `window` (here, per 15 minutes).
standardHeaders: 'draft-7', // Return rate limit info in the `RateLimit` header.
legacyHeaders: false, // Disable the `X-RateLimit-*` headers.
store: new MemcachedStore({
// prefix: 'rl:', // The prefix attached to all keys stored in the cache.
locations: ['localhost:11211'], // The server location(s), passed directly to Memcached.
}),
})
// Apply the rate limiting middleware to all requests
app.use(limiter)
```
> `string`
The text to prepend to all keys stored by this package in Memcached.
Defaults to `rl:`.
> `MemcachedClient`
The client used to make requests to the Memcached server. Must have the
following methods:
- `get: (key, callback)`
- `del: (key, callback)`
- `set: (key, value, lifetime, callback)`
- `add: (key, value, lifetime, callback)`
- `incr: (key, delta, callback)`
- `decr: (key, delta, callback)`
> Here, `key` is a string, `value` and `delta` are numbers, and `lifetime` is
> the time in seconds until it expires.
Defaults to an instance of [`memcached`](https://github.com/3rd-Eden/memcached),
created with the `locations` and `config` options (see below for details) passed
to it.
A list of memcached servers to store the keys in, passed to the default
Memcached client.
Note that the default client is only used if an alternative `client` is not
passed to the store.
Defaults to `['localhost:11211']`.
> `object`
The configuration passed to the default Memcached client.
Defaults to `{}`.
If you encounter a bug or want to see something added/changed, please go ahead
and
[](https://github.com/express-rate-limitedly/rate-limit-memcached/issues/new)!
If you need help with something, feel free to
[](https://github.com/express-rate-limit/rate-limit-memcached/discussions/new)!
If you wish to contribute to the library, thanks! First, please read
[](contributing.md). Then you can pick up any issue and
fix/implement it!
MIT © [Tomohisa Oda](http://github.com/linyows),
[](http://nfriedly.com) and
[](https://github.com/gamemaker1)