Node.js / NestJS

āļāļēāļĢāđāļ„āļŠāļ”āđ‰āļ§āļĒ Redis

Cache manager, āļāļēāļĢāļœāļŠāļēāļ™āļĢāļ§āļĄ Redis, āļāļĨāļĒāļļāļ—āļ˜āđŒāļāļēāļĢāđāļ„āļŠ, TTL, āļāļēāļĢāļ—āļģāđƒāļŦāđ‰āđ€āļ›āđ‡āļ™āđ‚āļĄāļ†āļ°, āđāļ„āļŠāđāļšāļšāļāļĢāļ°āļˆāļēāļĒ

20 āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒÂ·
Mid-Level
1

Redis āļ„āļ·āļ­āļ­āļ°āđ„āļĢāđƒāļ™āļšāļĢāļīāļšāļ—āļ‚āļ­āļ‡āļāļēāļĢāđāļ„āļŠ?

āļ„āļģāļ•āļ­āļš

Redis (Remote Dictionary Server) āđ€āļ›āđ‡āļ™āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ NoSQL āđāļšāļš key-value āļ—āļĩāđˆāļ­āļĒāļđāđˆāđƒāļ™āļŦāļ™āđˆāļ§āļĒāļ„āļ§āļēāļĄāļˆāļģ (in-memory) āļ‹āļķāđˆāļ‡āđƒāļŠāđ‰āđ€āļ›āđ‡āļ™āļŦāļĨāļąāļāđƒāļ™āļāļēāļ™āļ°āđāļ„āļŠāđāļšāļšāļāļĢāļ°āļˆāļēāļĒ āļ•āđˆāļēāļ‡āļˆāļēāļāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđāļšāļšāļ”āļąāđ‰āļ‡āđ€āļ”āļīāļĄāļ—āļĩāđˆāđƒāļŠāđ‰āļ”āļīāļŠāļāđŒ Redis āļˆāļąāļ”āđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ§āđ‰āđƒāļ™ RAM āļ‹āļķāđˆāļ‡āđƒāļŦāđ‰āđ€āļ§āļĨāļēāļ•āļ­āļšāļŠāļ™āļ­āļ‡āđƒāļ™āļĢāļ°āļ”āļąāļšāļĄāļīāļĨāļĨāļīāļ§āļīāļ™āļēāļ—āļĩ āđ‚āļ”āļĒāļĢāļ­āļ‡āļĢāļąāļšāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āļąāđ‰āļ™āļŠāļđāļ‡āđ€āļŠāđˆāļ™ strings, hashes, lists, sets āđāļĨāļ° sorted sets āļ—āļģāđƒāļŦāđ‰āļĄāļĩāļ„āļ§āļēāļĄāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™āļŠāļđāļ‡āļŠāļģāļŦāļĢāļąāļšāļĢāļđāļ›āđāļšāļšāļāļēāļĢāđāļ„āļŠāļ—āļĩāđˆāļŦāļĨāļēāļāļŦāļĨāļēāļĒ

2

āļ„āļ§āļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡āđāļžāđ‡āļāđ€āļāļˆ npm āđƒāļ”āđ€āļžāļ·āđˆāļ­āļœāļŠāļēāļ™āļĢāļ§āļĄ Redis āđƒāļ™ NestJS?

āļ„āļģāļ•āļ­āļš

āđƒāļ™āļāļēāļĢāļœāļŠāļēāļ™āļĢāļ§āļĄ Redis āđƒāļ™ NestJS āļ„āļļāļ“āļ•āđ‰āļ­āļ‡āļ•āļīāļ”āļ•āļąāđ‰āļ‡ @nestjs/cache-manager āđāļĨāļ° cache-manager-redis-store (āļŦāļĢāļ·āļ­ cache-manager-redis-yet āļŠāļģāļŦāļĢāļąāļšāđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āđƒāļŦāļĄāđˆ) āđāļžāđ‡āļāđ€āļāļˆ @nestjs/cache-manager āļˆāļąāļ”āđ€āļ•āļĢāļĩāļĒāļĄ CacheModule āļ­āļĒāđˆāļēāļ‡āđ€āļ›āđ‡āļ™āļ—āļēāļ‡āļāļēāļĢāļ—āļĩāđˆāļœāļŠāļēāļ™āļĢāļ§āļĄāļāļąāļšāļĢāļ°āļšāļš dependency injection āļ‚āļ­āļ‡ NestJS āđāļžāđ‡āļāđ€āļāļˆ cache-manager-redis-store āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āđƒāļŠāđ‰ Redis āđ€āļ›āđ‡āļ™āđāļšāđ‡āļāđ€āļ­āļ™āļ”āđŒāļ‚āļ­āļ‡āđāļ„āļŠāđāļ—āļ™āđāļ„āļŠ in-memory āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™

3

āđƒāļŠāđ‰āđ€āļĄāļ˜āļ­āļ”āđƒāļ”āđƒāļ™āļāļēāļĢāļāļģāļŦāļ™āļ”āļ„āđˆāļē CacheModule āļāļąāļš Redis āđāļšāļš global?

āļ„āļģāļ•āļ­āļš

āđ€āļĄāļ˜āļ­āļ” CacheModule.register() āļāļģāļŦāļ™āļ”āļ„āđˆāļēāđāļ„āļŠāđāļšāļš local āļŠāļģāļŦāļĢāļąāļšāđ‚āļĄāļ”āļđāļĨāļŦāļ™āļķāđˆāļ‡ āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆ CacheModule.registerAsync() āļžāļĢāđ‰āļ­āļĄ isGlobal: true āļ—āļģāđƒāļŦāđ‰āļžāļĢāđ‰āļ­āļĄāđƒāļŠāđ‰āļ‡āļēāļ™āđāļšāļš global āļ—āļąāđˆāļ§āļ—āļąāđ‰āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™ āļ§āļīāļ˜āļĩāđāļšāļš async āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļŠāļēāļĄāļēāļĢāļ– inject ConfigService āđ€āļžāļ·āđˆāļ­āļ”āļķāļ‡ URL āļ‚āļ­āļ‡ Redis āđāļšāļšāđ„āļ”āļ™āļēāļĄāļīāļāļˆāļēāļāļ•āļąāļ§āđāļ›āļĢāļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄ āļāļēāļĢāđƒāļŠāđ‰ isGlobal āļŠāđˆāļ§āļĒāļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļāļēāļĢ import CacheModule āļ‹āđ‰āļģāđƒāļ™āļ—āļļāļāđ‚āļĄāļ”āļđāļĨāļ‚āļ­āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™

4

TTL (Time To Live) āļ„āļ·āļ­āļ­āļ°āđ„āļĢāđƒāļ™āļšāļĢāļīāļšāļ—āļ‚āļ­āļ‡āđāļ„āļŠ Redis?

5

āđ€āļ”āļ„āļ­āđ€āļĢāđ€āļ•āļ­āļĢāđŒ @UseInterceptors(CacheInterceptor) āđƒāļ™ NestJS āļĄāļĩāļ§āļąāļ•āļ–āļļāļ›āļĢāļ°āļŠāļ‡āļ„āđŒāļ­āļ°āđ„āļĢ?

+17 āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āļŦāļąāļ§āļ‚āđ‰āļ­āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Node.js / NestJS āļ­āļ·āđˆāļ™āđ†

āļžāļ·āđ‰āļ™āļāļēāļ™ Node.js

Junior
20 āļ„āļģāļ–āļēāļĄ

Core API āļ‚āļ­āļ‡ Node.js

Junior
25 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđāļšāļšāļ­āļ°āļ‹āļīāļ‡āđ‚āļ„āļĢāļ™āļąāļŠ

Junior
25 āļ„āļģāļ–āļēāļĄ

āļžāļ·āđ‰āļ™āļāļēāļ™ Express.js

Junior
20 āļ„āļģāļ–āļēāļĄ

āļžāļ·āđ‰āļ™āļāļēāļ™ NestJS

Junior
23 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ­āļ­āļāđāļšāļš REST API

Junior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āđāļĨāļ° DTO

Junior
20 āļ„āļģāļ–āļēāļĄ

āđ€āļ­āļāļŠāļēāļĢ API āđāļĨāļ° Contract

Junior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”

Junior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ—āļ”āļŠāļ­āļšāļŦāļ™āđˆāļ§āļĒ (Unit Testing)

Junior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļˆāļąāļ”āļ•āļēāļĢāļēāļ‡āļ‡āļēāļ™

Junior
15 āļ„āļģāļ–āļēāļĄ

Module āđāļĨāļ° DI āļ‚āļ­āļ‡ NestJS

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļāļģāļŦāļ™āļ”āļ„āđˆāļēāđāļĨāļ°āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄ

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļĒāļ·āļ™āļĒāļąāļ™āļ•āļąāļ§āļ•āļ™āļ”āđ‰āļ§āļĒ JWT

Mid-Level
25 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāđƒāļŦāđ‰āļŠāļīāļ—āļ˜āļīāđŒāđāļĨāļ° RBAC

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ”āđ‰āļ§āļĒ TypeORM

Mid-Level
30 āļ„āļģāļ–āļēāļĄ

Prisma ORM

Mid-Level
25 āļ„āļģāļ–āļēāļĄ

Middleware āđāļĨāļ° Interceptor

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ­āļąāļ›āđ‚āļŦāļĨāļ”āđ„āļŸāļĨāđŒ

Mid-Level
15 āļ„āļģāļ–āļēāļĄ

WebSockets

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

GraphQL āļāļąāļš NestJS

Mid-Level
25 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ—āļ”āļŠāļ­āļšāđāļšāļš End-to-End

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļ„āļīāļ§āļ”āđ‰āļ§āļĒ Bull

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

DevOps, Logging āđāļĨāļ° CI/CD

Mid-Level
25 āļ„āļģāļ–āļēāļĄ

Docker āđāļĨāļ° Containerization

Mid-Level
25 āļ„āļģāļ–āļēāļĄ

āđ„āļĄāđ‚āļ„āļĢāđ€āļ‹āļ­āļĢāđŒāļ§āļīāļŠ

Senior
30 āļ„āļģāļ–āļēāļĄ

āđāļ™āļ§āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āļ”āđ‰āļēāļ™āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ

Senior
25 āļ„āļģāļ–āļēāļĄ

āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđāļĨāļ°āļāļēāļĢ Deploy āļšāļ™ Cloud

Senior
30 āļ„āļģāļ–āļēāļĄ

āđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļ Node.js / NestJS āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ„āļĢāļąāđ‰āļ‡āļ–āļąāļ”āđ„āļ›

āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ„āļģāļ–āļēāļĄāļ—āļąāđ‰āļ‡āļŦāļĄāļ” flashcards āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„ āđāļšāļšāļāļķāļāļŦāļąāļ” code review āđāļĨāļ°āļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āđ€āļĢāļīāđˆāļĄāđƒāļŠāđ‰āļŸāļĢāļĩ