Programing

PHP 애플리케이션에 MySQL 대신 Redis를 사용하는 경우

lottogame 2020. 11. 21. 08:17
반응형

PHP 애플리케이션에 MySQL 대신 Redis를 사용하는 경우


나는 Redis를보고 있었다. 매우 흥미로워 보입니다. 그러나 실용적인 관점에서 MySQL보다 Redis를 사용하는 것이 어떤 경우에 더 좋을까요?


전체 NoSQL 대 SQL 논쟁을 무시하고 가장 좋은 방법은 이들을 결합하는 것입니다. 즉, 시스템의 일부 (복잡한 조회, 트랜잭션)에는 MySQL을 사용하고 다른 부분 (성능, 카운터 등)에는 redis를 사용합니다.

내 경험상 확장 성과 관련된 성능 문제 (많은 사용자 ...)는 결국 MySQL 서버에서로드를 제거하기 위해 일종의 캐시를 추가해야하며 redis / memcached는 그에 매우 능숙합니다.


나는 Redis 전문가는 아니지만 내가 모은 것에서 둘 다 상당히 다릅니다. Redis :

  • 관계형 데이터베이스가 아닙니다 (멋진 데이터 조직이 아님)
  • 모든 것을 메모리에 저장 (더 빠르고 적은 공간, 충돌시 안전하지 않음)
  • 다양한 웹 호스트에 덜 널리 배포 됨 (직접 호스팅하지 않는 경우)

MySQL이 제공하는 관계형 구조가 필요하지 않고 빠른 액세스가 필요한 소량의 데이터가있을 때 Redis를 사용하는 것이 좋습니다. 예를 들어, 자주 빠르게 액세스해야하는 동적 웹 인터페이스의 세션 데이터 일 수 있습니다.

Redis는 또한 매우 자주 액세스되는 일부 MySQL 데이터의 캐시로 사용할 수 있습니다 (예 : 사용자가 로그인 할 때로드).

나는 당신이 잘못된 방식으로 질문하고 있다고 생각합니다. 어떤 응용 프로그램이 시스템에 적합한 지보다 응용 프로그램에 더 적합한 것이 무엇인지 스스로에게 물어봐야합니다.)


MySQL은 관계형 데이터 저장소입니다. 구성된 경우 (예 : innodb 테이블 사용) MySQL은 ACID 트랜잭션을 제공 하는 신뢰할 수있는 데이터 저장소입니다 .

Redis는 NoSQL 데이터베이스입니다. 속도와 신뢰성 ( 성능이 크게 저하 되기 때문에 fsync로 실행하는 경우는 드뭅니다 )과 트랜잭션 ( SETNX로 느리게 접근 할 수 있음 )과 함께 속도를 제공하므로 더 빠릅니다 ( 올바르게 사용하는 경우 ).

Redis에는 세트, 목록 및 정렬 된 목록과 같은 매우 깔끔한 기능이 있습니다 .

Redis의이 슬라이드에는 통계 수집 및 세션 관리가 예로 나와 있습니다. 예를 들어 redis로 작성된 트위터 클론 도 있지만 트위터 에서 redis를 사용한다는 의미는 아닙니다 ( 트위터 는 무거운 memcache 캐싱과 함께 MySQL을 사용함 ).


MySql-

1) 구조화 된 데이터 2) ACID 3) 무거운 트랜잭션 및 조회.

Redis-

1) 구조화되지 않은 데이터 2) 간단하고 빠른 조회. 예를 들어-세션의 토큰 3) 캐싱 계층에 사용하십시오.


Redis, SQL (+ NoSQL)에는 장점과 단점이 있으며 종종 나란히 살고 있습니다.

  • Redis-로컬 변수가 별도의 애플리케이션으로 이동 됨
    • 지역 변수 / 프로토 타입에서 쉽게 이동
    • 지속적인 저장
    • 여러 사용자 / 애플리케이션이 모두 동일한 데이터를 봅니다.
    • 확장 성
    • 장애 조치
    • (-) 데이터에 대한 고급 쿼리 / 질문을 수행하기 어려움
  • NoSQL
    • 원시 데이터를 "데이터베이스"로 덤프
    • 모든 / 대부분의 Redis 기능
    • (-) SQL에 비해 고급 쿼리를 수행하기가 더 어렵습니다.
  • SQL
    • 데이터 간 고급 쿼리
    • 모든 / 대부분의 Redis 기능
    • (-) "스키마"에 데이터를 배치해야합니다 (시트 / Excel을 생각하십시오).
    • (-) Redis / NoSQL보다 간단한 값을 입력 / 출력하는 것이 더 어렵습니다.

(다른 SQL / NoSQL 솔루션은 다를 수 있습니다. 하나의 시스템이 모든 것을 동시에 제공 할 수없는 이유에 대해 'CAP 정리'및 'ACID (컴퓨터 과학)'를 읽어야합니다.)


공식 웹 사이트에 따르면 Redis는 데이터베이스, 캐시 및 메시지 브로커로 사용되는 오픈 소스 (BSD 라이선스), 인 메모리 데이터 구조 저장소입니다. 실제로 Redis는 고급 키-값 저장소입니다. 그것은 말 그대로 초당 약 110000 SET, 초당 약 81000 GET을 수행 할 수 있기 때문에 놀랍도록 높은 처리량으로 말 그대로 초고속입니다. 또한 저장할 매우 풍부한 데이터 유형 세트를 지원합니다. 사실 Redis는 매번 데이터를 메모리에 보관하지만 디스크에 영구적 인 데이터베이스도 보관합니다. 따라서 트레이드 오프가 있습니다. 데이터 세트의 크기 제한 (메모리 당)에 따른 놀라운 속도입니다. 이 기사에서는 MySQL과 비교하여 몇 가지 벤치 마크를 확보하기 위해 Redis를 캐싱 엔진으로 만 사용합니다.

여기 읽기 : Redis vs MySQL 벤치 마크

참고 URL : https://stackoverflow.com/questions/3966689/when-to-use-redis-instead-of-mysql-for-php-applications

반응형