📚 PHP 최상급 - 5주차: NoSQL 데이터베이스 (MongoDB/Redis) 활용- 02 MongoDB/Redis 기본 사용법

2025. 10. 17. 15:01프로그램/PHP 최상급

#NoSQL 의 투톱: #MongoDB 와 #Redis 소개

📚 PHP 최상급 - 5주차: NoSQL 데이터베이스 (MongoDB/Redis) 활용- 02 MongoDB/Redis 기본 사용법


지난 시간에는 #NoSQL 데이터베이스의 필요성과 종류에 대해 알아보았습니다. 이번 시간에는 #PHP애플리케이션 에서 가장 많이 활용되는 두 가지 #NoSQL 데이터베이스, **MongoDB (문서형 DB)**와 **Redis (키-값 DB)**의 기본 사용법과 #PHP 에서의 연동 방법을 구체적으로 실습해 보겠습니다.

#MongoDB 는 복잡하고 유연한 데이터를 저장하는 메인 데이터베이스로, #Redis 는 초고속 캐싱 및 세션 관리를 위한 보조 저장소로 활용되어 #PHP개발 의 성능을 비약적으로 향상시킬 수 있습니다.


1. #MongoDB 기본 사용법 및 #PHP 연동


#MongoDB 는 데이터를 JSON 형태와 유사한 BSON(Binary JSON) 문서(Document) 형태로 저장합니다. #RDB 의 테이블은 #MongoDB 의 **컬렉션(Collection)**에 해당하며, 레코드는 문서에 해당합니다.

1.1. MongoDB 기본 개념

  • 문서(Document): 데이터의 기본 단위로, #JSON 과 유사한 구조를 가집니다
  • 컬렉션(Collection): 관련된 문서들의 그룹으로, #RDB 의 테이블과 유사합니다
  • 스키마리스(Schemaless): 동일한 컬렉션 내의 문서라도 필드 구조가 달라도 무방합니다 (유연성)

1.2. PHP MongoDB 드라이버 설치

#PHP 에서 #MongoDB 를 사용하려면 mongodb 확장을 설치하고 #Composer 를 통해 PHP용 MongoDB 라이브러리인 mongodb/mongodb를 설치해야 합니다.

Bash
 
# Dockerfile 또는 서버에서 확장 설치
# docker-php-ext-install mongodb (PHP FPM 환경)

# Composer 라이브러리 설치
composer require mongodb/mongodb

1.3. PHP CRUD 기본 예시

#PHP 에서 #MongoDB 에 연결하고 문서를 삽입(Create), 조회(Read)하는 기본 코드입니다.

PHP
 
// PHP MongoDB 라이브러리 사용
require 'vendor/autoload.php';

use MongoDB\Client;

// 1. MongoDB 연결 (Docker 환경에서는 서비스 이름 사용)
$client = new Client('mongodb://mongo:27017'); 
$collection = $client->selectCollection('mydb', 'users'); 

// 2. 문서 삽입 (Create)
$insertResult = $collection->insertOne([
    'name' => '김철수',
    'age' => 30,
    'tags' => ['developer', 'php', 'nosql'],
    'address' => [
        'city' => 'Seoul',
        'zip' => '03187'
    ]
]);
echo "삽입된 문서 ID: " . $insertResult->getInsertedId() . "\n";

// 3. 문서 조회 (Read)
$document = $collection->findOne(['name' => '김철수']);
if ($document) {
    echo "조회된 문서: " . json_encode($document) . "\n";
}

// 4. 문서 업데이트 (Update)
$updateResult = $collection->updateOne(
    ['name' => '김철수'],
    ['$set' => ['age' => 31, 'status' => 'active']]
);
echo "업데이트된 문서 개수: " . $updateResult->getModifiedCount() . "\n";

2. #Redis 기본 사용법 및 #PHP 연동


#Redis 는 인메모리(In-Memory) 데이터 구조 저장소로, 데이터를 메모리에 저장하여 밀리초 단위의 응답 속도를 제공하는 #키값데이터베이스 입니다. #RDB 나 #MongoDB 의 부하를 줄여주는 캐싱 및 세션 관리용으로 활용됩니다.

2.1. Redis 데이터 타입

#Redis 는 단순한 문자열 외에도 다양한 자료구조를 지원합니다.

  • String: 가장 기본적인 문자열 저장 (캐시 데이터, 세션)
  • Hash: 객체 형태로 필드-값 쌍 저장 (사용자 정보)
  • List: 삽입 순서가 보장되는 문자열 목록 (최근 알림, 큐)
  • Set: 중복이 없는 문자열 집합 (태그, 좋아요)
  • Sorted Set: 점수(Score)로 정렬된 집합 (실시간 랭킹)

2.2. PHP Redis 확장 설치

#PHP 에서 #Redis 를 사용하려면 redis 확장을 설치해야 합니다.

Bash
 
# Dockerfile 또는 서버에서 확장 설치
# pecl install redis
# docker-php-ext-enable redis

2.3. PHP Redis 기본 예시 (PHP-Redis 확장 사용)

#PHP 에서 #Redis 의 String 타입과 Hash 타입을 활용하는 기본 코드입니다.

PHP
 
// Redis 확장 사용 (라이브러리 로딩 불필요)
$redis = new Redis();
// Redis 연결 (Docker 환경에서는 서비스 이름 사용)
$redis->connect('redis', 6379); 

// 1. String 타입 사용 (캐시)
$redis->set('user:session:123', '{"id":1, "login_time":"..."}', 3600); // 3600초(1시간) 만료 설정
$sessionData = $redis->get('user:session:123');
echo "세션 데이터: " . $sessionData . "\n";

// 2. Hash 타입 사용 (사용자 정보)
$redis->hMSet('user:profile:456', [
    'username' => '홍길동',
    'email' => 'hong@example.com',
    'last_login' => time()
]);
$userData = $redis->hGetAll('user:profile:456');
echo "사용자 프로필: " . print_r($userData, true) . "\n";

// 3. 데이터 삭제
$redis->del('user:session:123');
echo "세션 데이터 삭제 완료.\n";

결론


#MongoDB 는 복잡한 데이터 모델의 유연성을, #Redis 는 메모리 기반의 초고속 데이터 액세스를 제공합니다. #PHP개발 에서 이 두 가지 #NoSQL 데이터베이스를 #RDB 와 함께 적재적소에 활용하는 것은 성능과 확장성 모두를 잡는 #최상급기술 입니다. 이들을 #Docker 환경에서 #PHP애플리케이션 과 통합하는 실습을 통해 기술 역량을 한 단계 더 발전시킬 수 있습니다.

 

 

유튜브/인스타그램 조회 유효 KT아이피, 쇼핑 크롤링, 지역별 다대역 IP보유

https://xn--299ao67b9qbmsf04c.net/

 

VPN 5,500원 / IP교체 1,100원 / 유동프록시 22,000원 | LuzenVPN 루젠VPN

국내최저가 고정IP서비스,유동프록시(IP4000개이상제공),PPTP,L2TP,IPSec,OpenVPNVPN,통신사VPN,VPN프로그램,고정IP,고정아이피,PPTP,저렴한VPN,리니지MVPN,리니지VPN,아이온VPN,던파VPN,유동프록시,유동PROXY,바이

vpn.luzensoft.com