Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alkihis/twitter-api-v2-plugin-cache-redis
Cache requests of twitter-api-v2 using a Redis server
https://github.com/alkihis/twitter-api-v2-plugin-cache-redis
Last synced: about 1 month ago
JSON representation
Cache requests of twitter-api-v2 using a Redis server
- Host: GitHub
- URL: https://github.com/alkihis/twitter-api-v2-plugin-cache-redis
- Owner: alkihis
- Created: 2022-02-16T21:37:04.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2022-05-16T14:05:09.000Z (over 2 years ago)
- Last Synced: 2024-10-04T06:34:25.071Z (about 2 months ago)
- Language: TypeScript
- Size: 39.1 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# @twitter-api-v2/plugin-cache-redis
> Cache requests of twitter-api-v2 using a Redis server
## Usage
```ts
import { createClient } from 'redis'
import { TwitterApi } from 'twitter-api-v2'
import { TwitterApiCachePluginRedis } from '@twitter-api-v2/plugin-cache-redis'const redisInstance = createClient()
const client = new TwitterApi(yourKeys, { plugins: [new TwitterApiCachePluginRedis(redisInstance)] })// First request: download from Twitter
await client.v2.me()// Second request: served from Redis
await client.v2.me()// One parameter has changed: new request to Twitter
await client.v2.me({ expansions: ['pinned_tweet_id'] })
```## Behaviour
- Requests are not scoped by user, so the same request for different users will be cached under the same key. You can extend `TwitterApiCachePluginRedis` class to implement a different strategy.
- Default TTL is **when rate limit expires**. It means that request cache will be automatically deleted when your rate limit for a given endpoint is reset.You can edit this by setting the `ttl` options:
```ts
const redisPlugin = new TwitterApiCachePluginRedis(redisInstance, { ttl: 60000 }) // 60 seconds (in milliseconds)
```Use `0` to disable TTL.
- If you leave default TTL option (`reset`), you should define a strategy to apply when a request without rate limit information comes in.
Default strategy is to apply a TTL of 15 minutes.You can edit this by setting the `ttlIfNoRateLimit` options:
```ts
const redisPlugin = new TwitterApiCachePluginRedis(redisInstance, { ttlIfNoRateLimit: 60000 }) // 60 seconds (in milliseconds)
```Use `0` to disable TTL.
This option has no effect of `ttl` is a `number`.