Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/express-rate-limit/rate-limit-memcached
A rate limiting store for express-rate-limit with Memcached
https://github.com/express-rate-limit/rate-limit-memcached
api express memcached nodejs rate-limiting typescript
Last synced: about 2 months ago
JSON representation
A rate limiting store for express-rate-limit with Memcached
- Host: GitHub
- URL: https://github.com/express-rate-limit/rate-limit-memcached
- Owner: express-rate-limit
- License: mit
- Created: 2017-12-12T08:48:34.000Z (about 7 years ago)
- Default Branch: main
- Last Pushed: 2024-04-10T18:17:14.000Z (9 months ago)
- Last Synced: 2024-11-06T03:18:03.061Z (2 months ago)
- Topics: api, express, memcached, nodejs, rate-limiting, typescript
- Language: TypeScript
- Size: 755 KB
- Stars: 13
- Watchers: 4
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- Changelog: changelog.md
- Contributing: contributing.md
- License: license.md
Awesome Lists containing this project
README
#
`rate-limit-memcached`[![tests](https://github.com/express-rate-limit/rate-limit-memcached/actions/workflows/ci.yaml/badge.svg)](https://github.com/express-rate-limit/rate-limit-memcached/actions/workflows/ci.yaml)
[![npm version](https://img.shields.io/npm/v/rate-limit-memcached.svg)](https://npmjs.org/package/rate-limit-memcached 'View this project on NPM')
[![npm downloads](https://img.shields.io/npm/dm/rate-limit-memcached)](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.## Installation
From the npm registry:
```sh
# Using npm
> npm install express-rate-limit
# Using yarn or pnpm
> yarn/pnpm add express-rate-limit
```From Github Releases:
```sh
# Using npm
> npm install https://github.com/express-rate-limit/rate-limit-memcached/releases/download/v{version}/rate-limit-memcached.tgz
# Using yarn or pnpm
> 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`.## Usage
**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)
```## Configuration
### `prefix`
> `string`
The text to prepend to all keys stored by this package in Memcached.
Defaults to `rl:`.
### `client`
> `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.### `locations`
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']`.
### `config`
> `object`
The configuration passed to the default Memcached client.
Defaults to `{}`.
## Issues and Contributing
If you encounter a bug or want to see something added/changed, please go ahead
and
[open an issue](https://github.com/express-rate-limitedly/rate-limit-memcached/issues/new)!
If you need help with something, feel free to
[start a discussion](https://github.com/express-rate-limit/rate-limit-memcached/discussions/new)!If you wish to contribute to the library, thanks! First, please read
[the contributing guide](contributing.md). Then you can pick up any issue and
fix/implement it!## License
MIT © [Tomohisa Oda](http://github.com/linyows),
[Nathan Friedly](http://nfriedly.com) and
[Vedant K](https://github.com/gamemaker1)