Redis 및 캐시

캐시란 무엇입니까?



캐시는 클라이언트에 대한 반복 데이터를 저장할 수 있는 메모리 내 데이터 저장소입니다.

캐시는 클라이언트 애플리케이션에 대해 거의 키-값 데이터 저장소 역할을 합니다.

왜 필요한가요? DBMS는 어떻습니까?



Redis와 같은 메모리 내 캐시 시스템을 사용하면 물리적 RAM에 데이터를 저장할 수 있습니다. 외부 데이터베이스와 달리 데이터는 하드 디스크 또는 SSD에 저장됩니다. 즉, 캐시에서 데이터에 액세스하고 검색하는 것이 외부 데이터 저장소에서 검색하는 것보다 훨씬 빠릅니다.

클라이언트가 API에 요청할 때마다 기본 데이터 저장소에 도달하면 많은 대기 시간이 발생할 수 있습니다. 특히 많은 집계, 조회 및 응답 시간을 만드는 쿼리.

그 외에도 기본 데이터베이스의 부하와 연결이 증가하므로 해당 데이터베이스를 실행하는 서버의 리소스와 할당량이 증가합니다.

Redis 캐시는 어떻게 작동합니까?



Redis는 문자열, 목록 및 해시와 같이 저장할 다양한 데이터 유형을 제공하기 때문에 매우 편리합니다.

작동 방식의 기본 아이디어는 Redis 내부의 기본 데이터베이스에서 얻은 데이터를 키-값 쌍으로 저장하는 것입니다.

다음에 이 데이터를 가져오려고 할 때 Redis 캐시에서 데이터를 사용할 수 있는지 확인합니다. 그렇다면 추가 계산 및 외부 데이터베이스 연결 없이 Redis에서 데이터를 검색합니다. 데이터가 캐시 내부에 없으면 기본 DB에서 데이터를 검색하고 나중에 Redis 내부에 캐시합니다.

이 확인 계층은 여러 가지 방법으로 얻을 수 있습니다. 그 중 하나는 Express.js를 사용하여 아래와 같이 캐시 가용성을 확인하는 글로벌 미들웨어를 만드는 것입니다.

Redis의 항목이 만료되면 키와 값이 더 이상 존재하지 않습니다. 저장한 키를 기반으로 캐시의 가용성을 확인할 수 있습니다.

const cacheAvailability = (req, res, next) => {
  const { id } = req.params; // or from body or any input we can modify the middleware based on 
  redis.get(id, (error, result) => {
    if (error) throw error;
    if (result !== null) {
      return res.json(JSON.parse(result)); // Parsed because there is a stringified object as a value 
    } else {
      return next();
    }
  });
};


언제 고려해야 합니까?



캐싱과 관련하여 고려해야 할 두 가지 용어가 있습니다.Hit rate : 외부 데이터 소스가 아닌 캐시에서 실제로 데이터를 가져온 횟수입니다.
Miss Rate : 만료된 캐시에 액세스하여 기본 데이터베이스에서 데이터를 가져오는 횟수입니다.

캐싱은 자주 반복적으로 요청되는 데이터를 저장하기 위한 것입니다. 반복적이고 자주 변경되지 않는 데이터. 적중률이 높을수록 애플리케이션에서 더 많은 성능과 효율성을 얻을 수 있습니다.

지속적으로 캐시를 확인하고 비어 있는 것을 찾은 다음 기본 Db에서 데이터를 가져와서 캐시에 저장하는 것은 쓸모가 없습니다.

캐싱해야 하는 날짜, 캐시에 저장되는 기간, 기본 데이터베이스에서 직접 가져오는 경우 작업 비용 사이에는 지속적인 관계가 있어야 합니다.

좋은 웹페이지 즐겨찾기