REDIS 캐시에 대한 초보자 가이드입니다.
캐싱이란?
캐싱은 백엔드를 지원하는 추상 스토리지 메커니즘을 제공하는 중간 단계입니다. 서버의 응답 시간을 줄이기 위해 최적화된 효율적인 데이터 추출이 가능합니다. 간단히 말해서, 우리는 최소한의 검색 비용으로 데이터에 쉽게 액세스할 수 있도록 데이터를 임시 위치에 저장합니다. 또한 네트워크를 통해 전송되는 데이터의 대역폭을 줄여 애플리케이션을 빠르고 사용자 친화적으로 만듭니다. 여러 계산을 거쳐 특정 데이터 조각을 얻으면 캐시에 저장되고 다음에 필요할 때 추가 계산 비용을 건너뛰고 직접 액세스할 수 있습니다.
백엔드에 캐시를 포함할 시기를 결정하는 요소
캐싱은 계산된 데이터 청크를 매우 자주 사용하는 경우에만 의미가 있습니다. 그렇지 않은 경우 새로운 데이터 세트가 항상 캐시에 계산되고 저장되어야 하므로 캐싱은 의미가 없습니다.
TTL은 캐시 내부의 키가 만료되는 시간(초)입니다. 캐시에서 키를 업데이트/제거할 최적의 시간을 결정하는 것이 가장 중요합니다. 최신 캐시를 유지하는 논리는 응답 시간에 중요한 역할을 하고 더 중요한 것은 응답에 오래된 데이터를 제공하지 않는다는 것입니다.
REDIS 캐시는 어떻게 작동합니까?
Redis는 원격 사전 서버를 의미합니다. 높은 수준의 데이터 유형을 저장하고 조작하는 기능이 있습니다. 인메모리 데이터베이스이며 데이터 액세스 작업이 다른 디스크 기반 데이터베이스보다 빠르기 때문에 Redis는 캐싱을 위한 완벽한 선택입니다. 키-값 데이터 저장 시스템은 저장 및 검색을 훨씬 더 간단하게 만들기 때문에 또 다른 장점입니다. Redis를 사용하면 각각 SET 및 GET 메서드를 사용하여 캐시에 데이터를 저장하고 검색할 수 있습니다(Java의 Hashmap 또는 python의 사전처럼).
Redis 설정
일반적인 NodeJS 서버용 Redis 구현에 대해 논의할 것입니다. 먼저 redis 노드 클라이언트를 설치해야 합니다. 또한 Redis가 로컬에 설치되어 실행 중인지 확인하십시오. redis를 설치하고 실행하는 방법을 찾으려면 checkouthere을 수행하십시오.
노드 레이어에서 Redis로 작업하기
Redis를 사용하는 것은 매우 간단합니다. 요청을 수신하는 모든 경로에 대해 경로에 캐시가 활성화되어 있는지 확인해야 합니다. 활성화된 경우 요청된 키에 대한 데이터가 캐시에 있는지 찾아야 합니다. 존재하는 경우 데이터베이스 작업 없이 미들웨어 자체에서 직접 반환합니다. 그렇지 않은 경우 해당 데이터를 계산하고 반환하기 전에 Redis 캐시에 키 쌍 형식으로 저장합니다. 데이터를 저장하는 데 사용되는 키는 요청의 여러 매개변수를 사용하여 구성할 수 있는 사용자 지정 문자열일 수 있습니다.
const logger = require('winston-logger')
const CONFIG = require('configs/config')
const { redis: redisClient } = require('redis-client')
const axios = require('axios')
const getData = async (_, args, ctx) => {
try {
let { data: { slug, query } } = args
//creating unique key based on slug
let cacheName = `MEDIA_PAGE_COLLECTION-${slug}`
let cacheData = await redisClient.get(cacheName)
if (cacheData) {
let data = JSON.parse(cacheData)
return {
data
}
} else {
let url = `${CONFIG.contentful.baseUrl}/spaces/${CONFIG.contentful.spaceId}/environments/${CONFIG.contentful.environment}`
let response = await axios({
url,
method: 'POST',
headers: { 'Authorization': `Bearer ${CONFIG.accessToken}`},
customQuery: {
query
}
})
data = response.data
await redisClient.setex(cacheName, 43200, JSON.stringify(data))
return {
data
}
}
} catch (error) {
logger.error('ERROR WHILE FETCHING data >>>', error)
return error
}
}
위의 코드는 Redis-cache를 구현한 예시입니다. 먼저 데이터가 존재하는지 여부를 확인합니다. 존재하지 않으면 키를 생성하여 키에 대한 데이터를 동적으로 저장합니다. 데이터를 저장하는 동안 3개의 매개변수를 제공했습니다. 첫 번째는 데이터를 저장해야 하는 키입니다. 두 번째는 데이터를 캐시에 저장해야 하는 TTL이고 세 번째 매개변수는 콘텐츠입니다. TTL 이후에는 키-값 쌍이 만료됩니다.
또한 일반적인 캐시 작동 방식의 기본 기능을 보여주기 위해 기본 순서도를 첨부했습니다.
노드 서버 체크아웃을 위해 Redis를 설치하고 사용하려면here
Reference
이 문제에 관하여(REDIS 캐시에 대한 초보자 가이드입니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aniketrathi1999/a-beginners-guide-to-redis-cache-2mc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)