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
'programing' 카테고리의 다른 글
여러 요청을 사용하여 액세스 토큰 새로 고침 (0) | 2022.10.18 |
---|---|
j회피해야 할 함정 쿼리 (0) | 2022.10.18 |
java pojo 클래스, java bean, normal 클래스란 무엇입니까? (0) | 2022.10.18 |
입력 종료 잭슨 파서로 인해 매핑할 콘텐츠가 없습니다. (0) | 2022.10.18 |
ElasticSearch를 MySQL과 통합하는 방법 (0) | 2022.10.08 |