Cache requests of twitter-api-v2 using a Redis server
Usage
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)] })
await client.v2.me()
await client.v2.me()
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:
const redisPlugin = new TwitterApiCachePluginRedis(redisInstance, { ttl: 60000 })
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:
const redisPlugin = new TwitterApiCachePluginRedis(redisInstance, { ttlIfNoRateLimit: 60000 })
Use 0
to disable TTL.
This option has no effect of ttl
is a number
.