mysql과 redis 간의 이중 쓰기 일관성을 보장하는 방법
1. 시나리오:
이중 쓰기 일관성은 데이터베이스의 데이터를 업데이트한 후 Redis의 데이터도 동기식으로 업데이트되어야 함을 의미합니다. Redis를 사용하여 데이터를 읽는 프로세스입니다. 사용자가 데이터에 액세스하면 먼저 캐시에서 데이터를 읽습니다. 캐시에 데이터가 없으면 캐시에 있는 데이터가 사용자에게 직접 반환됩니다. 캐시에 있는 경우 데이터베이스를 먼저 쿼리하고 쿼리된 데이터를 캐시에 저장한 다음 사용자에게 반환합니다.
2. 이중 쓰기 일관성 보장 전략
1. 캐시를 먼저 업데이트한 다음 데이터베이스를 업데이트하세요
2. 데이터베이스를 먼저 업데이트한 다음 캐시를 업데이트하세요
3. 데이터베이스를 업데이트하세요
4 , 데이터베이스를 먼저 업데이트한 후 캐시를 삭제하세요
셋, 네 가지 전략의 장단점
1. 캐시를 먼저 업데이트한 후 데이터베이스를 업데이트하세요
문제는 명백합니다 .캐시 업데이트는 성공했지만 데이터베이스 업데이트에 실패하면 캐시가 손상됩니다
2. 먼저 데이터베이스를 업데이트한 후 캐시를 업데이트하세요
동시성이 높을 경우 다음과 같은 상황이 발생할 수 있습니다. 스레드 A가 데이터베이스를 업데이트하지 않은 경우 스레드 A는 아직 캐시를 업데이트할 시간이 있습니다. 이때 프로세스 B는 데이터베이스를 업데이트하고 캐시를 업데이트합니다. .이때 트랜잭션 손실 상황처럼 스레드 B의 캐시 업데이트가 손실됩니다
3. 캐시를 먼저 삭제한 후 데이터베이스를 업데이트하세요
이 전략은 전략 2의 캐시 손실 상황을 피할 수 있었을 것입니다. 그러나 동시성이 아무리 높아도 불일치가 발생합니다. 예를 들어 스레드 A는 쓰기 작업을 수행합니다. 먼저 캐시를 삭제하고 데이터베이스 업데이트를 준비합니다. 이때 스레드 B는 쓰기 작업을 수행하지만 히트하지 않습니다. 그런 다음 데이터베이스를 쿼리합니다. 이때 쿼리된 이전 값을 캐시에 저장합니다. 그런 다음 스레드 A가 데이터베이스 업데이트가 완료된 후 해결 방법: 우리만 가능합니다. A를 다시 스레드해야 합니다. 데이터베이스 업데이트를 완료한 후 약간의 지연을 두고 캐시를 다시 삭제합니다. 이를 지연 이중 삭제라고도 합니다. 여기서 지연 시간은 비즈니스 읽기 작업 시간보다 커야 합니다.
4. 먼저 데이터베이스를 업데이트한 다음 캐시를 삭제하세요.
높은 동시성 상황에서도 불일치가 발생합니다. 예를 들어 스레드 A가 데이터를 읽고 캐시에 쓸 준비를 하고 있습니다. 이 때 스레드 A는 이전 값을 캐시에 씁니다. 그러나 쓰기 작업이 읽기 작업보다 오래 걸리기 때문에 이러한 일이 발생할 확률은 상대적으로 낮습니다. 대안으로 원래 단어를 단순화하고 재구성할 수 있습니다. 삭제 실패를 처리하려면 지연된 이중 삭제 솔루션을 채택하는 것이 좋습니다. 지연된 이중 삭제 문제가 여전히 발생하더라도 캐시가 완전히 지워질 때까지 삭제 작업을 반복할 수 있습니다. 삭제에 실패하면 삭제해야 하는 키를 대기열에 넣고 삭제가 성공할 때까지 계속해서 삭제를 시도할 수 있습니다.
위 내용은 mysql과 redis 간의 이중 쓰기 일관성을 보장하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

MySQL은 버전 8.0.16에서 효과적인 도메인 무결성을 강제하기위한 체크 제약 조건을 지원합니다. 1. 표를 작성할 때 제약 조건을 추가하십시오 : CreateTable을 사용하여 ≥18, 급여> 0, 부서 한계 값과 같은 점검 조건을 정의하십시오. 2. 제약 조건을 추가하기 위해 테이블을 수정하십시오. AltertableAddConstraint를 사용하여 비어 있지 않은 이름과 같은 필드 값을 제한하십시오. 3. 복잡한 조건 사용 : 종료 날짜 ≥ 스테이트 날짜 및 완료 상태와 같은 다중 열 논리 및 표현을 지원하십시오. 완료 상태에는 종료 날짜가 있어야합니다. 4. 제약 조건 삭제 : altertabledropconstraint를 사용하여 삭제할 이름을 지정합니다. 5. 노트 : MySQL8.0.16, Innodb 또는 Myisam을 인용해야합니다.

대형 테이블을 다룰 때 MySQL 성능 및 유지 보수 가능성은 직면하고 구조 설계, 인덱스 최적화, 테이블 하위 테이블 전략 등을 시작해야합니다. 1. 기본 키 및 색인을 합리적으로 설계해야합니다. 자체 증가 정수를 기본 키로 사용하여 페이지 분할을 줄이는 것이 좋습니다. 오버레이 인덱스를 사용하여 쿼리 효율성을 향상시킵니다. 느린 쿼리 로그를 정기적으로 분석하고 유효하지 않은 인덱스를 삭제하십시오. 2. 파티션 테이블의 합리적 사용 : 시간 범위 및 쿼리 및 유지 보수 효율성을 향상시키기위한 기타 전략에 따른 파티션이지만 분할 및 절단 문제에주의를 기울여야합니다. 3. 분리 및 도서관 분리를 읽고 쓰고 쓰는 것을 고려하십시오 : 읽기 및 쓰기 분리는 메인 라이브러리의 압력을 완화시킵니다. 라이브러리 분리 및 테이블 분리는 많은 양의 데이터가있는 시나리오에 적합합니다. 미들웨어를 사용하고 거래 및 크로스 스토어 쿼리 문제를 평가하는 것이 좋습니다. 초기 계획과 지속적인 최적화가 핵심입니다.

useamany-to-manyrelationshipwithajunctiontabletolinkitemsandtagsviathreetables : 항목, 태그, anditem_tags.2

MySQL 서비스가 실행 중인지 확인하고 sudosystemctlstatusmysql을 사용하여 확인하고 시작하십시오. 2. 원격 연결을 허용하고 서비스를 다시 시작하기 위해 BAND-ADDRESS가 0.0.0.0으로 설정되어 있는지 확인하십시오. 3. 3306 포트가 열려 있는지 확인하고 포트를 허용하도록 방화벽 규칙을 확인하고 구성하십시오. 4. "AccessDenied"오류의 경우 사용자 이름, 비밀번호 및 호스트 이름을 확인한 다음 MySQL에 로그인하여 MySQL.user 테이블을 쿼리하여 권한을 확인해야합니다. 필요한 경우 사용자를 생성하거나 업데이트하여 'Your_user'@'%'사용과 같은 승인; 5. Caching_sha2_password로 인해 인증이 손실 된 경우

deletereMovesspecificorAllrows, KeepStableStructure, 허용 롤백 트리거 및 DOSNOTRESETAUTO-Increment; 2.TrUncateQuicklyRemovesAllrows, resetSauto-increment, Most Cases, Disfiretiggers, and KeepstableSthee;

MySQL에 모든 데이터베이스를 표시하려면 ShowDatabases 명령을 사용해야합니다. 1. MySQL 서버에 로그인 한 후 ShowDatabase를 실행할 수 있습니다. 현재 사용자가 액세스 할 권한이있는 모든 데이터베이스를 나열하도록 명령. 2. Information_Schema, MySQL, Performance_Schema 및 SYS와 같은 시스템 데이터베이스는 기본적으로 존재하지만 권한이 부족한 사용자는이를 볼 수 없을 수 있습니다. 3. SelectSchema_namefrominformation_schema.schemata를 통해 데이터베이스를 쿼리하고 필터링 할 수도 있습니다. 예를 들어, 사용자가 만든 데이터베이스 만 표시하려면 시스템 데이터베이스를 제외합니다. 사용하십시오

mysqldump를 사용하는 것이 MySQL 데이터베이스를 백업하는 가장 일반적이고 효과적인 방법입니다. 테이블 구조 및 데이터가 포함 된 SQL 스크립트를 생성 할 수 있습니다. 1. 기본 구문은 다음과 같습니다. mysqldump-u [user name] -p [database name]> backup_file.sql입니다. 실행 후 암호를 입력하여 백업 파일을 생성하십시오. 2.-databases 옵션으로 여러 데이터베이스를 백업 옵션 : mysqldump-uroot-p-- databasesdb1db2> multip_dbs_backup.sql. 3. all-databases : mysqldump-uroot-p를 사용하여 모든 데이터베이스를 백업합니다

컴퓨터는 "MSVCP71.dll이 컴퓨터에서 누락되었습니다"라는 메시지를 표시합니다. 이는 일반적으로 시스템에 중요한 실행 구성 요소가 없기 때문에 소프트웨어가 정상적으로로드되지 않기 때문입니다. 이 기사는 파일의 기능과 오류의 근본 원인을 깊이 분석하고 실행하도록 프로그램을 신속하게 복원하는 데 도움이되는 세 가지 효율적인 솔루션을 제공합니다. 1. MSVCP71.dll이란 무엇입니까? MSVCP71.dll은 Microsoft Visualc 2003의 핵심 런타임 라이브러리 파일에 속하며 DLL (Dynamic Link Library) 유형에 속합니다. 표준 기능, STL 템플릿 및 기본 데이터 처리 모듈을 호출하기 위해 C로 작성된 프로그램을 지원하는 데 주로 사용됩니다. 2000 년대 초에 개발 된 많은 응용 프로그램과 클래식 게임은이 파일에 의존하여 실행됩니다. 파일이 없거나 손상되면
