>  기사  >  백엔드 개발  >  PHP에서 Redis 캐싱 기술을 사용하여 데이터베이스 읽기 및 쓰기 최적화

PHP에서 Redis 캐싱 기술을 사용하여 데이터베이스 읽기 및 쓰기 최적화

WBOY
WBOY원래의
2023-06-20 13:48:071284검색

인터넷 기술의 지속적인 발전으로 인해 데이터의 양은 점점 늘어나고 있으며, 데이터베이스를 읽고 쓰는 부담도 커지고 있습니다. 그러나 이때 우리의 사용자 경험은 항상 매우 빠른 응답을 유지해야 합니다. 캐싱 기술은 특히 중요합니다. 이 기사에서는 Redis 캐싱 기술을 사용하여 PHP 애플리케이션의 데이터베이스 읽기 및 쓰기를 최적화하는 방법을 소개합니다.

1. 레디스란?

Redis는 단순히 키-값 저장 시스템입니다. 다른 키-값 저장 시스템과 달리 Redis는 다양한 데이터 유형(문자열, 목록, 세트, ​​순서가 지정된 세트, 해시 테이블)의 데이터 저장을 지원하고 풍부한 작업 명령 세트를 제공합니다. Redis는 디스크에 대한 데이터 지속성을 지원하고 기존 캐시 시스템을 완전히 대체할 수 있는 인메모리 스토리지 데이터베이스입니다.

2. Redis를 사용하는 이유는 무엇인가요?

기존 애플리케이션의 흐름은 일반적으로 애플리케이션이 데이터베이스에서 데이터를 읽은 다음 데이터를 어떤 형식으로 사용자에게 제공하는 것입니다. 이 과정에서 가장 시간이 많이 걸리는 일은 데이터베이스에서 데이터를 읽는 것입니다. Redis 캐시는 데이터의 일부를 메모리에 캐시하여 반복 읽기를 캐시에서 직접 얻을 수 있도록 하여 데이터베이스에 대한 빈번한 쿼리를 방지하고 데이터베이스에 대한 부담을 줄이고 읽기 및 쓰기 효율성을 향상시켜 시스템 비용을 절감하고 시스템의 전체 처리량을 향상시킵니다.

3. PHP 애플리케이션에서 Redis를 사용하는 방법은 무엇입니까?

Redis를 사용하기 전에 먼저 Redis를 설치해야 합니다. Redis 설치 및 PHP 확장 설치 프로세스는 여기서 자세히 설명하지 않습니다. 독자가 이미 Redis 및 PHP 확장을 설치했다고 가정합니다. 다음으로 PHP 애플리케이션에서 Redis를 사용하는 방법을 소개합니다.

  1. Data Cache

애플리케이션에서 캐시된 데이터는 Redis의 set 및 get 명령을 통해 설정하고 얻을 수 있습니다.

//设置缓存
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);  //连接到Redis
$redis->set('name', 'redis cache'); //设置缓存
$redis->expire('name', 3600);       //设置过期时间

//获取缓存
$redis = new Redis();
$redis->connect('127.0.0.1', 6379); //连接到Redis
$name = $redis->get('name');         //获取缓存
if($name){                           //判断缓存是否存在
    echo $name;
}else{                               //不存在则从数据库中读取数据
    $name = 'get data from database';
    $redis->set('name', $name);
    $redis->expire('name', 3600);
    echo $name;
}

위 코드에서는 먼저 Redis에 캐시 데이터가 있는지 확인합니다. 캐시 데이터가 있으면 직접 가져와서 캐시를 설정하고 만료 시간을 설정합니다.

  1. 캐시된 데이터의 일괄 작업

때로는 여러 데이터 조각을 한 번에 캐시해야 하는 경우가 있습니다. Redis의 multi 및 exec 명령을 사용하면 캐시된 데이터를 일괄 작업할 수 있습니다.

//批量设置缓存
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->multi();
$redis->set('name1', 'cache1');
$redis->set('name2', 'cache2');
$redis->set('name3', 'cache3');
$redis->exec();

//批量获取缓存
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->multi();
$redis->get('name1');
$redis->get('name2');
$redis->get('name3');
$result = $redis->exec();

위 코드에서 multi 및 exec 명령을 사용하여 캐시를 설정하거나 여러 캐시를 얻는 여러 작업을 수행할 수 있습니다.

  1. 캐시 읽기 및 쓰기 분리

애플리케이션에서 일부 데이터 작업은 빈번하며 로그인 상태 등과 같은 높은 데이터 무결성이 필요하지 않습니다. Redis에서 이러한 데이터와 사용자와 같은 더 중요한 데이터를 캐싱하는 것을 고려할 수 있습니다. 이름, 비밀번호, 이메일 등이 데이터베이스에 저장될 수 있습니다. 이것의 장점은 읽기 및 쓰기 효율성을 향상시키고 캐시된 데이터의 변경으로 인해 데이터베이스 데이터 불일치가 발생하지 않는다는 것입니다.

//缓存数据
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set('login:userid', '1');       //将登录状态存储到Redis中
$redis->expire('login:userid', 3600);

//读取数据
//先从Redis中读取
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$loginUserId = $redis->get('login:userid');
//如果Redis中不存在,则从数据库中读取
if(empty($loginUserId)){
    $sql = "select id from user where username='admin'";
    $result = $mysqli->query($sql)->fetch_assoc();
    $loginUserId = $result['id'];
    //将读取到的数据存储到Redis缓存中
    $redis->set('login:userid', $loginUserId);
    $redis->expire('login:userid', 3600);
}

위 코드에서는 Redis에 사용자 로그인 상태를 저장합니다. 읽을 때 Redis 캐시에서 먼저 읽습니다. Redis에 없으면 데이터베이스에서 읽습니다.

4. 요약

Redis 캐싱 기술을 사용하면 PHP 애플리케이션의 읽기 및 쓰기 성능을 크게 향상시키고, 애플리케이션과 데이터베이스 간의 분리를 달성하고, 시스템 응답 시간을 단축하고, 사용자 경험을 향상시킬 수 있습니다. Redis 캐시를 사용할 때는 쓰기와 읽기 순서에 주의해야 하며 실제 상황에 따라 캐시된 데이터의 유효 기간을 설정해야 합니다. 동시성, 분산, 캐시 사태 등이 높은 상황에서는 캐시 시스템의 안정성과 신뢰성을 보장하기 위해 해당 운영 및 유지 관리 기술과 방법을 결합해야 합니다.

위 내용은 PHP에서 Redis 캐싱 기술을 사용하여 데이터베이스 읽기 및 쓰기 최적화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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