apollo-server/packages/apollo-server-caching
Martijn Walraven 6bd73b175f Publish
- apollo-cache-control@0.3.0
 - apollo-datasource-rest@0.2.0
 - apollo-datasource@0.2.0
 - apollo-engine-reporting-protobuf@0.1.0
 - apollo-engine-reporting@0.1.0
 - apollo-server-azure-functions@2.2.0
 - apollo-server-cache-memcached@0.2.0
 - apollo-server-cache-redis@0.2.0
 - apollo-server-caching@0.2.0
 - apollo-server-cloud-functions@2.2.0
 - apollo-server-cloudflare@2.2.0
 - apollo-server-core@2.2.0
 - apollo-server-env@2.2.0
 - apollo-server-errors@2.2.0
 - apollo-server-express@2.2.0
 - apollo-server-hapi@2.2.0
 - apollo-server-integration-testsuite@2.2.0
 - apollo-server-koa@2.2.0
 - apollo-server-lambda@2.2.0
 - apollo-server-micro@2.2.0
 - apollo-server-plugin-base@0.1.0
 - apollo-server-testing@2.2.0
 - apollo-server@2.2.0
 - apollo-tracing@0.3.0
 - graphql-extensions@0.3.0
2018-11-07 08:17:21 -08:00
..
src Fix apollo-server-cache delete implementation for both redis and memcached (#1891) 2018-10-29 11:25:09 +02:00
.gitignore Add support for Redis and Memcached with ttls (#1191) 2018-06-18 19:36:51 -07:00
.npmignore Add support for Redis and Memcached with ttls (#1191) 2018-06-18 19:36:51 -07:00
jest.config.js Replace {} with Object.create(null) in jest.config.js 2018-10-12 13:00:13 +02:00
package.json Publish 2018-11-07 08:17:21 -08:00
README.md Rename apollo-server-redis and apollo-server-memcached 2018-07-18 18:30:09 -07:00
tsconfig.json Add root level tsconfig.json as entry point 2018-10-05 21:48:49 +02:00

apollo-server-caching

npm version Build Status

Implementing your own Cache

Internally, Apollo Server uses the KeyValueCache interface to provide a caching store for the Data Sources. An in-memory LRU cache is used by default, and we provide connectors for Memcached/Redis backends.

Built with extensibility in mind, you can also implement your own cache to use with Apollo Server, in a way that best suits your application needs. It needs to implement the following interface that can be exported from apollo-server-caching:

export interface KeyValueCache {
  get(key: string): Promise<string | undefined>;
  set(key: string, value: string, options?: { ttl?: number }): Promise<void>;
}

Running test suite

You can export and run a jest test suite from apollo-server-caching to test your implementation:

// ../__tests__/YourKeyValueCache.test.ts

import YourKeyValueCache from '../src/YourKeyValueCache';
import { testKeyValueCache } from 'apollo-server-caching';
testKeyValueCache(new MemcachedCache('localhost'));

Run tests with jest --verbose