raito-nestjs - is an Nest.js middleware and API for communicating with Raito cache server.
[!IMPORTANT] Node.js 18.x+ version must be installed in your OS.
$ yarn add @raito-cache/nestjs
import { Module } from '@nestjs/common';
import { RaitoModule } from '@raito-cache/nestjs';
@Module({
imports: [RaitoModule.register()],
})
export class AppModule {}
import { RaitoInterceptor } from '@raito-cache/nestjs';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
@UseInterceptors(RaitoInterceptor)
async getHello() {
return await this.appService.getHello();
}
}
// Async
RaitoModule.registerAsync({
useFactory: () => ({
port: 9180, // Raito port
host: 'localhost', // Raito host
ttl: 10000, // Cache records time to live
}),
})
// Sync
RaitoModule.register() // Connect to localhost:9180
RaitoModule.register(7180); // localhost:7180
RaitoModule.register('raito://localhost:9180'); // localhost:9180
RaitoModule.register('raito://localhost:9180?ttl=5000'); // localhost:9180 and ttl 5s
RaitoModule.register({
port: 9180,
host: 'localhost',
ttl: 10000,
});
import { Module } from '@nestjs/common';
import { RaitoInterceptor, RaitoModule } from '@raito-cache/nestjs';
import { APP_INTERCEPTOR } from '@nestjs/core';
@Module({
imports: [RaitoModule.register()],
providers: [
{
provide: APP_INTERCEPTOR,
useClass: RaitoInterceptor,
}
],
})
export class AppModule {}
import { RaitoInterceptor } from '@raito-cache/nestjs';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
@UseInterceptors(RaitoInterceptor)
async getHello() {
return await this.appService.getHello();
}
}
import { Injectable } from '@nestjs/common';
import { RaitoService } from '@raito-cache/nestjs';
@Injectable()
export class AppService {
constructor(private readonly raito: RaitoService) {}
useSerive() {
await raito.set('key', { data: 'some data' }); // Create new record
await raito.set('key2', 'other data', 15000); // Create new record with 15s ttl
await raito.get('key2'); // Output: { key: 'key', data: 'other data', createdAt: Date, ttl: 15000 }
await raito.clear('key'); // Deletes record
await raito.shutdown(); // Close connection
}
}
- Pull docker image:
$ docker pull stbestich/raito-cache:latest
- Run it
$ docker run -e HOST=<host> -p <port>:9180 -it stbestich/raito-cache
services:
raito-cache:
image: stbestich/raito-cache:latest
ports:
- "${PORT:-9180}:${PORT:-9180}"
- "${PORT:-9181}:${PORT:-9181" # Define second port if you need http proxy
env_file:
- .env
environment:
NODE_ENV: production
PORT: ${PORT:-9180}
HOST: ${HOST:-0.0.0.0}
TTL: ${TTL}
tty: true
stdin_open: true
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
Project changes are writen in changelog, see the CHANGELOG.md.
We use SemVer for versioning. For the versions available, see the tags on this repository. For the versions supported, see the SECURITY.md.
This project is licensed under the MIT License - see the LICENSE.md