JSCODE Logo
프로그래밍 과외블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2025 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

Redis를 추가하기 전 기본적인 Nest.js 프로젝트 셋팅하기

JSCODE 박재성
JSCODE 박재성
2025-12-06
author
JSCODE 박재성
category
Redis
createdAt
Dec 6, 2025
series
비전공자도 이해할 수 있는 Redis 입문/실전
slug
nestjs-basic-setup
type
post
updatedAt
Dec 6, 2025 04:33 AM
❗
Nest.js를 주로 사용하는 수강생이더라도 이전 섹션(로컬 환경에서 Spring Boot + Redis로 구현하기)의 강의를 듣고오는 걸 추천한다.

✅ 기본적인 Nest.js 프로젝트 셋팅하기

  1. Nest.js 프로젝트 생성
    1. # nest new {프로젝트명} $ nest new instagram-server
 
  1. TypeORM 설치하기
    1. $ npm i @nestjs/typeorm typeorm mysql2
 
  1. DB 정보 셋팅하기
    1. app.module.ts
      @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', port: 3306, username: 'root', password: 'password', database: 'mydb', autoLoadEntities: true, synchronize: true, }), ], controllers: [AppController], providers: [AppService], }) export class AppModule {}
 
  1. Board 엔티티 만들기
    1. board.etnity.ts
      @Entity('boards') export class Board { @PrimaryGeneratedColumn() id: number; @Column() title: string; @Column() content: string; @CreateDateColumn() createdAt: Date; }
       
  1. 기본 Controller, Service, Reposiotry 만들기
    1. board.controller.ts
      @Controller() export class BoardController { constructor(private readonly boardService: BoardService) {} @Get('boards') getBoards(@Query('page') page: number = 1, @Query('size') size: number = 10) { return this.boardService.getBoards(page, size); } }
       
      board.service.ts
      @Injectable() export class BoardService { constructor( @InjectRepository(Board) private boardRepository: Repository<Board>, ) {} async getBoards(page: number, size: number): Promise<Board[]> { const skip = (page - 1) * size; const boards = await this.boardRepository.find({ order: { createdAt: 'DESC' }, skip: skip, take: size, }); return boards; } }
app.module.ts
@Module({ imports: [ TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', port: 3306, username: 'root', password: 'password', database: 'mydb', autoLoadEntities: true, synchronize: true, logging: true, }), TypeOrmModule.forFeature([Board]), ], controllers: [BoardController], providers: [BoardService], }) export class AppModule {}
 
 

✅ 더미 데이터 넣기

-- 기존 테이블 데이터 삭제 TRUNCATE TABLE boards; -- 높은 재귀(반복) 횟수를 허용하도록 설정 -- (아래에서 생성할 더미 데이터의 개수와 맞춰서 작성하면 된다.) SET SESSION cte_max_recursion_depth = 1000000; -- boards 테이블에 더미 데이터 삽입 INSERT INTO boards (title, content, createdAt) WITH RECURSIVE cte (n) AS ( SELECT 1 UNION ALL SELECT n + 1 FROM cte WHERE n < 1000000 -- 생성하고 싶은 더미 데이터의 개수 ) SELECT CONCAT('Title', LPAD(n, 7, '0')) AS title, -- 'Title' 다음에 7자리 숫자로 구성된 제목 생성 CONCAT('Content', LPAD(n, 7, '0')) AS content, -- 'Content' 다음에 7자리 숫자로 구성된 내용 생성 TIMESTAMP(DATE_SUB(NOW(), INTERVAL FLOOR(RAND() * 3650 + 1) DAY) + INTERVAL FLOOR(RAND() * 86400) SECOND) AS createdAt -- 최근 10년 내의 임의의 날짜와 시간 생성 FROM cte;
  • 위 SQL문은 MySQL 8.0부터 사용이 가능하다.
 
 
author
category
Redis
createdAt
series
비전공자도 이해할 수 있는 Redis 입문/실전
slug
type
series-footer
updatedAt
Dec 6, 2025 04:33 AM
📎
이 글은 비전공자도 이해할 수 있는 Redis 입문/실전 (조회 성능 최적화편) 강의의 수업 자료 중 일부입니다.