>  기사  >  백엔드 개발  >  thinkPHP5 프레임워크 데이터베이스 일관성 작업: 캐시() 사용 세부 정보

thinkPHP5 프레임워크 데이터베이스 일관성 작업: 캐시() 사용 세부 정보

jacklove
jacklove원래의
2018-05-22 17:34:231678검색

이 기사의 예에서는 thinkPHP5 프레임워크 데이터베이스의 일관된 작동을 위해 캐시()를 사용하는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

소개

TP5와 함께 제공되는 캐시 시스템은 파일 유형 캐시입니다. 즉, 파일 유형 캐시입니다. 저장소 주소는 루트 디렉터리..runtimecache입니다(루트 디렉터리는 공용을 참조함).

redis와 비교하면 이 캐싱 시스템의 memcached는 확실히 한계가 있고, 자동 업데이트와 캐시된 데이터의 복잡성에도 차이가 있습니다. 하지만 몇 가지 간단한 쿼리에는 매우 유용합니다. 예를 들어 기사나 기타 콘텐츠를 활용하는 것이 좋습니다.

cache는 선택, 찾기, 값 및 열 방법과 그 파생 방법에 사용할 수 있습니다. 캐시 방법을 사용한 후에는 캐시 유효 기간 내에 데이터베이스 쿼리 작업이 다시 수행되지 않지만 캐시에 있는 데이터는 데이터 캐싱 정보 유형 및 설정은 캐시 섹션에서 확인할 수 있습니다.

저장 캐시

1. 간단한 저장

//뉴스 테이블에서 id=10으로 뉴스를 쿼리하고 캐시에 저장합니다. db(): 기본적으로 구성된 캐시 시간을 읽습니다.

db('news')->cache(true)->find(10);
 
//你也可以自定义时间,60秒表示
 
db('news')->cache(true,60)->find(10);

2. 캐시 식별자 지정

//캐시 식별자는 키로 이해될 수 있습니다. 즉, 캐시에 있는 특정 데이터 조각의 토큰을 검색하려는 경우 ID=15입니다. 캐시에 저장되고 주어진 첨자는 키입니다

db('news')->cache('key')->find(15);

//id=15

$data = \think\Cahce::get('key');

이 데이터를 어디에서나 읽을 수 있으며 session()과 유사합니다.

3. 캐시 방법은 캐시 태그 설정을 지원합니다.

db('news')->cache('key',60,'tagName')->find(15);

Update 캐시

이제 프로젝트가 일정 기간 동안 실행되면 많은 캐시 파일이 생성되고 문제가 발생합니다. 파일 수가 증가합니다. 각 요청에 대해 캐시 파일을 찾는 데 낭비되는 시간은 데이터베이스를 직접 쿼리하는 것보다 느릴 수 있습니다.

TP5에는 캐시 자동 업데이트 방식이 있습니다. 즉, 동일한 데이터가 삭제되거나 업데이트되면 기존 캐시 파일이 자동으로 삭제됩니다.

/id=328로 캐시 쿼리

$list = db('news')->cache(true)->find(328);

//이제 테스트를 위해 수동으로 데이터베이스 id=328인 필드의 값을 수정한 후 다시 첫 번째 쿼리 요청을 하여 데이터베이스의 수정된 필드가 변경되지 않았음을 확인합니다. 이때 읽기 캐시가

db(' news')->update( ['id'=>328,'title'=>'Test']);

//이때 다시 요청해 보면 획득한 데이터가 변경된 것을 확인할 수 있습니다. . 이때는 더 이상 읽기 캐시가 아닙니다. 업데이트 작업이 완료되어 캐시에 다시 기록되었기 때문입니다. 물론 위에서 언급한 상황의 전제는 기본 키 쿼리가 사용된다는 것입니다

thinkPHP5 프레임워크 데이터베이스의 일관된 작업을 위한 캐시() 사용에 대해 설명합니다. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트를 참고하세요.

관련 권장 사항:

다중 상속 효과를 달성하기 위한 PHP 인터페이스 다중 상속 및 타릿 방법 튜토리얼 세부 정보

특정 연도의 주의 시작 날짜와 종료 날짜를 얻는 방법에 대한 PHP 튜토리얼

php string 면접에서 자주 접하는 질문 반전


위 내용은 thinkPHP5 프레임워크 데이터베이스 일관성 작업: 캐시() 사용 세부 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.