rsnext/examples/cache-handler-redis
akfm 10599a4e1e
fix(examples): cache-handler-redis implementation may cause error "Socket already opened" on production (#61978)
### What?

I copied the contents of `cache-handler.js` and tried it, and got an
error `"Socket already opened"`.
ref: https://github.com/caching-tools/next-shared-cache/issues/284
It should be fixed so that it doesn't matter if it is copied.

### Why?

Because `Socket already opened`, so a condition is needed before `await
client.connect()`.

### How?

Add environment variable(`process.env.REDIS_AVAILABLE`) check.
ref:
https://caching-tools.github.io/next-shared-cache/configuration/opt-out-cache-on-build

Co-authored-by: akfm.sato <01047245@CF0286.local>
2024-02-13 23:45:11 +00:00
..
app chore(examples): use default prettier for examples/templates (#60530) 2024-01-11 16:01:44 -07:00
public Add a self-hosted shared cache example (#58000) 2023-11-09 14:29:11 +00:00
.gitignore Add a self-hosted shared cache example (#58000) 2023-11-09 14:29:11 +00:00
cache-handler.js fix(examples): cache-handler-redis implementation may cause error "Socket already opened" on production (#61978) 2024-02-13 23:45:11 +00:00
docker-compose.yml chore(examples): use default prettier for examples/templates (#60530) 2024-01-11 16:01:44 -07:00
next.config.js Update Redis Cache example with stabilized API (#60800) 2024-01-21 02:40:54 +00:00
package.json Update Redis Cache example with stabilized API (#60800) 2024-01-21 02:40:54 +00:00
README.md Update Redis Cache example with stabilized API (#60800) 2024-01-21 02:40:54 +00:00
tsconfig.json Add a self-hosted shared cache example (#58000) 2023-11-09 14:29:11 +00:00

Next.js Redis Cache Integration Example

This example is tailored for self-hosted setups and demonstrates how to use Redis as a shared cache. It is built on the principles of the @neshca/cache-handler package, which replaces the default Next.js cache handler and adds advanced caching features.

Check out this repository that contains a comprehensive setup for Kubernetes.

How to use

Execute create-next-app with npm, Yarn, or pnpm to bootstrap the example:


npx create-next-app --example cache-handler-redis cache-handler-redis-app
yarn create next-app --example cache-handler-redis cache-handler-redis-app
pnpm create next-app --example cache-handler-redis cache-handler-redis-app

Once you have installed the dependencies, you can begin running the example Redis Stack server by using the following command:

docker-compose up -d

Then, build and start the Next.js app as usual.

Documentation

For detailed information on configuration and usage, please refer to our comprehensive Documentation ↗.

Key Features and Considerations

  • Handlers: The @neshca/cache-handler package includes Handlers for seamless integration with Redis.

  • Create Your Own Handlers: Take a look at Custom Redis Handler and use it as a basis to create your own handler.

  • Redis Server Setup: Ensure your Redis server is running and properly configured before starting your Next.js application.

  • Configure Redis Credentials: Update the cache-handler-redis* files with your Redis credentials. Connection details can be found here.

  • Building Without Redis: To build the app without connecting to Redis use conditions inside onCreation callback. Check the documentation for more details.

Development and Production Considerations

  • The provided docker-compose.yml is intended for local development. For production deployment, refer to the official Redis installation and management guidelines.

  • Clearing Redis Cache: To clear the Redis cache, use RedisInsight Workbench or the following CLI command:

    docker exec -it redis-stack redis-cli
    127.0.0.1:6379> flushall
    OK