>  기사  >  백엔드 개발  >  내 Redis 캐시가 부분 데이터만 반환하는 이유는 무엇입니까?

내 Redis 캐시가 부분 데이터만 반환하는 이유는 무엇입니까?

王林
王林앞으로
2024-02-08 21:33:211001검색

내 Redis 캐시가 부분 데이터만 반환하는 이유는 무엇입니까?

Redis 캐시를 사용할 때 다음과 같은 일반적인 문제에 직면할 수 있습니다. Redis 캐시가 데이터의 일부만 반환하는 이유는 무엇입니까? 이 문제에는 부적절한 캐시 설정, 캐시 키 이름 충돌, 캐시 만료 등 여러 가지 원인이 있을 수 있습니다. 이 문제를 해결하기 전에 코드와 구성을 주의 깊게 확인하여 캐시가 제대로 작동하는지 확인해야 합니다. 이 문서에서는 가능한 원인을 분석하고 이 문제를 해결하고 Redis 캐시가 완전한 데이터를 반환하는지 확인하는 데 도움이 되는 솔루션을 제공합니다.

질문 내용

이 함수는 postgres 및 redis 캐시 구현을 확인합니다. get 요청을 하면 첫 번째 결과가 모든 데이터를 반환하지만 다음 결과를 만들면 데이터의 일부 필드가 누락됩니다

으아악

이것은 내 사용자 구조입니다. user struct {를 입력하세요. 아이디 uuid.uuid json:"id" 이름 문자열 json:"first_name" 성 문자열 json:"last_name" 다른 이름 문자열 json:"other_name" 사용자 이름 문자열 json:"user_name" 비밀번호 문자열 json:"密码" 이메일 문자열 json:"email" 프로필 이미지 문자열 json:"profile_image" 상태 문자열 json:"status" isadmin 부울 json:"is_admin" 역할 문자열 json:"角色" 성별 문자열 json:"性别" 전화번호 문자열 json:"phone_number" 시간에 생성됨 json:"created_at" 시간에 업데이트되었습니다 json:"updated_at" }

해결 방법

여러분에게 도움을 드리기 위해 작은 예를 준비했습니다. 전제로서 여기서 중요한 내용을 제공하기 위해 귀하의 예를 단순화했습니다. 아직 프로그램의 일부가 공유되지 않은 부분이 있어서 추측을 좀 해봐야겠습니다. 이 예가 작동하지 않는 경우 누락된 내용을 알려주시면 답변을 업데이트하겠습니다. docker를 사용하여 로컬에서 postgres/redis를 실행하는 명령부터 시작하겠습니다.

설정

내가 사용한 명령은 다음과 같습니다.

  1. docker run -d -p 54322:5432 -e postgres_password=postgres postgres
  2. docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest

이제 코드로 전환해 보겠습니다.

프로그램

으아악

각 섹션을 자세히 살펴보겠습니다(번호가 매겨진 댓글로 ​​구분):

  1. 클라이언트 초기화에 대해서는 별로 할 말이 없습니다. 로컬 인스턴스를 가리키는 클라이언트를 초기화했습니다
  2. 그런 다음 더미 데이터로 데이터베이스를 설정합니다
  3. redis 인스턴스에서 데이터를 가져오려고 합니다. 발견되면 인쇄하고 프로그램을 종료합니다
  4. 캐시에서 데이터를 찾을 수 없으면 데이터베이스에서 가져옵니다
  5. 마지막으로 데이터베이스에서 데이터를 가져오는 경우 해당 데이터도 캐시에 저장해야 한다고 가정하는 것이 안전합니다

두 경우 모두 동일한 필드를 사용하여 동일한 양의 데이터를 얻습니다. 따라서 이 예를 고수하고 모델 및 프로젝트 유형에 맞게 조정하면(내 프로젝트는 웹 프로젝트가 아니었음) 괜찮을 것입니다. 여전히 문제가 있으면 알려주시기 바랍니다. 감사해요!

위 내용은 내 Redis 캐시가 부분 데이터만 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제