@raito-cache/nestjs
v0.0.1
Published
API and middleware for nestjs to communicate with raito-cache server
Downloads
68
Readme
raito-nestjs
Table of contents
About
raito-nestjs - is an Nest.js middleware and API for communicating with Raito cache server.
Getting started
[!IMPORTANT] Node.js 18.x+ version must be installed in your OS.
1. Install package
$ yarn add @raito-cache/nestjs
2. Connect to Raito
import { Module } from '@nestjs/common';
import { RaitoModule } from '@raito-cache/nestjs';
@Module({
imports: [RaitoModule.register()],
})
export class AppModule {}
3. Use Interceptor
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();
}
}
API
Connect to Raito
// 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,
});
Usage
Raito Interceptor as global
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 {}
Raito Interceptor as local
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();
}
}
Raito Service
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
}
}
Raito Deployment
- Pull docker image:
$ docker pull stbestich/raito-cache:latest
- Run it
$ docker run -e HOST=<host> -p <port>:9180 -it stbestich/raito-cache
Use with docker-compose
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
Contributing
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
Changelog
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.
Authors
License
This project is licensed under the MIT License - see the LICENSE.md