programing

PHP 어플리케이션에서 MySQL 대신 Redis를 사용해야 할 때는 언제입니까?

luckcodes 2022. 10. 18. 22:03

PHP 어플리케이션에서 MySQL 대신 Redis를 사용해야 할 때는 언제입니까?

레디스를 보고 있었어요그것은 매우 흥미로워 보인다.그러나 실제적인 관점에서 볼 때 MySQL보다 Redis를 사용하는 것이 더 좋은 경우는 무엇일까요?

NoSQL vs SQL에 대한 논의는 무시한 채 결합하는 것이 가장 좋은 방법이라고 생각합니다.즉, 시스템의 일부 부분(복잡한 룩업, 트랜잭션)에는 MySQL을 사용하고 다른 부분(퍼포먼스, 카운터 등)에는 redis를 사용합니다.

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

난 레디스 전문가는 아니지만, 내가 들은 바로는 둘 다 꽤 달라.레디스:

  • 관계형 데이터베이스가 아니다(고상한 데이터 구성 없음)
  • 모든 데이터를 메모리에 저장(빠른 속도, 공간 절약, 충돌 시 안전성이 저하됨)
  • 다양한 웹 호스트에 널리 도입되지 않음(자신을 호스팅하지 않는 경우)

MySQL이 제공하는 관계 구조가 필요 없고 빠른 액세스가 필요한 적은 양의 데이터를 가지고 있다면 Redis를 사용하는 것이 좋다고 생각합니다.예를 들어 동적 웹 인터페이스의 세션 데이터가 빈번하고 빠르게 액세스해야 하는 경우가 있습니다.

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

질문을 거꾸로 하고 있는 것 같습니다.어느 애플리케이션이 시스템에 적합한지 아닌 어떤 것이 애플리케이션에 적합한지 자문해 주십시오.

MySQL은 관계형 데이터 저장소입니다.예를 들어 innodb 테이블을 사용하여 구성한 경우 MySQL은 ACID 트랜잭션을 제공하는 신뢰할 수 있는 데이터스토어입니다.

Redis는 NoSQL 데이터베이스입니다.신뢰성과 함께 속도를 교환하기 때문에(fsync로 실행하는 것은 매우 드물기 때문에), 트랜잭션(SETNX 대략적으로 천천히)이 가능하기 때문에(올바르게 사용하는 경우) 속도가 더 빠릅니다.

Redis에는 세트, 리스트, 정렬 리스트 등 매우 깔끔한 기능이 있습니다.

Redis에 관한슬라이드에는 통계 수집과 세션 관리가 예시되어 있습니다.예를 들어 redis로 작성된 twitter 클론도 있지만 twitter use redis(twitter use MySQL with high memcache caching)를 의미하는 것은 아닙니다.

MySql -

1) 구조화 데이터 2) ACID 3) 대량 거래 및 조회.

레디스 -

1) 구조화되지 않은 데이터 2) 단순하고 빠른 조회.예를 들어 세션 3)의 토큰을 캐시 레이어에 사용합니다.

Redis, SQL(+NoSQL)에는 다음과 같은 이점이 있으며 다음과 같은 이점이 있습니다.

  • Redis - red른른른 른른른른른 른른른 red red
    • 로컬 변수/프로토타입에서 쉽게 이동
    • 영속적인 스토리지 레이지
    • 여러 사용자/애플리케이션에서 모두 동일한 데이터 표시
    • 확장성
    • 페일오버
    • (-) 데이터에 대한 보다 고도의 질의/질문을 하기 어렵다
  • NoSQL
    • 원시 데이터를 "데이터베이스"에 덤프
    • Redis 기능의 전부/대부분
    • (-) SQL에 비해 고급 쿼리 실행이 어렵다
  • SQL
    • 데이터 간의 고급 쿼리
    • Redis 기능의 전부/대부분
    • (-) 데이터를 '스케줄'에 배치할 필요가 있다(think sheet/Excel)
    • (-) Redis/NoSQL보다 간단한 값을 입출력하기 어렵다

(SQL/NoSQL 솔루션마다 다를 수 있습니다.CAP 정리 ACID에 대해 한 시스템에서 모든 기능을 동시에 제공할 수 없는 이유를 읽어보십시오.)

공식 웹사이트에 따르면 Redis는 데이터베이스, 캐시 및 메시지 브로커로 사용되는 오픈 소스(BSD 라이선스) 인메모리 데이터 구조 저장소입니다.사실, Redis는 고급 키-밸류 스토어입니다.초당 약 1100,000 SET, 초당 약 81000 GET를 실행할 수 있어 말 그대로 초고속 스루풋이 놀라울 정도로 높습니다.또한 저장할 수 있는 매우 풍부한 데이터 유형 집합도 지원합니다.실제로 Redis는 매번 데이터를 메모리에 저장하지만 영구적인 온디스크 데이터베이스도 유지합니다.따라서 데이터셋의 크기 제한(메모리당)에 따른 놀라운 속도라는 단점이 있습니다.이 기사에서는 MySQL과 비교하여 몇 가지 벤치마크를 하기 위해 Redis를 캐싱 엔진으로만 사용합니다.

여기를 읽어주세요: Redis와 MySQL의 벤치마크

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