레디스 속성반.
14447 단어 rediswebdevjavascript
이 문서에서는 다음과 같은 내용을 다룹니다.
Redis란?
Redis는 메모리의 데이터베이스로 밀리초 지연됩니다.Redis는 원격 사전 서비스를 나타냅니다.redis의 강점은 느린 디스크가 아닌 메모리에 데이터를 저장하는 데 있다.데이터베이스에 있는 모든 데이터 포인트는 키 값이 맞습니다.이 값은 다음 필드 중 하나일 수 있습니다. -
문자열
왜 리디스를 둘러싸고 대대적으로 홍보하는 거죠?
레드스는 빠른 속도로 인기를 끌었다.관계 데이터베이스와 달리, Redis는 데이터를 비교적 느린 하드디스크에 저장하고, Redis는 데이터를RAM에 저장한다.RAM을 사용하기 때문에 Redis가 불안정합니다. 시스템이 종료될 때 데이터가 분실됩니다.따라서 Redis는 일반적으로 Mongodb나 PostgresSql처럼 지속적인 데이터베이스로 사용되지 않고 캐시로 사용된다.지금, 내가 아래에서 토론할 것처럼 그것은 더욱 강하다.
🌟 초고속 데이터 액세스: -Redis는 밀리초 단위로 데이터를 액세스할 수 있으며, 기존 방식에서는 수백 밀리초 단위로 데이터를 액세스할 수 있습니다.
Redis는 언제 사용됩니까?
Redis는 데이터베이스의 대안이 아니라 기존 데이터베이스 위에 세워졌다.자주 액세스해야 하는 모든 데이터는 Redis에 저장될 수 있습니다.
Redis 설치
Ubuntu-from the official Ubuntu PPA
$ sudo add-apt-repository ppa:redislabs/redis
$ sudo apt-get update
$ sudo apt-get install redis
Mac-use homebrew
brew update
brew install redis
Windows WSL을 사용하여 Windows
기본 Redis 명령
Startup Commands
redis-server
- Redis 서버를 시작하려면 명령 redis-cli
을 입력하십시오. 터미널을 닫으려면 quit
명령 Basic commands
SET name your-name
- 설정값 GET name
- 상기 DEL name
- EXISTS name
- 키가 KEYS *
- 모든 열쇠 획득 flushall
- 모든 데이터 정리 Expiration
ttl key-name
- 키가 자동으로 삭제되기 전까지 얼마나 오래 걸렸는지 확인합니다.결과가 -1
이면 ttl(생존시간)이 설정되지 않고 기한이 지나지 않는다는 뜻이다.expire key-name 10
- ttl을 10초로 설정합니다.setex name 10 your-name
- 키 값을 맞출 때ttl을 설정합니다.명세서
대기열이나 창고를 실현하려면 목록이 유용합니다.예를 들어messenger 프로그램에서 우리는 가장 최근의 메시지를 캐시합니다.
lpush fruits apple
- 항목을 목록의 왼쪽으로 밀어냅니다.rpush fruits mango
- 항목을 목록의 오른쪽으로 밀어냅니다.lrange fruits 0 -1
- 목록에서 모든 항목을 가져옵니다.-1
은 목록의 끝을 대표하는 색인이다.LPOP fruits
- 목록에서 맨 왼쪽 항목을 삭제합니다.RPOP fruits
- 목록에서 맨 오른쪽에 있는 항목을 삭제합니다.설정
집합은 목록과 유사하다.집합을 다른 것은 유일한 값만 저장한다는 것이다.
SADD todo "read book"
- 컬렉션에 항목을 추가합니다.(주의: 만약 우리가 다시 "read book"을 추가하려고 시도한다면, 그것은 중복되기 때문에 추가되지 않을 것입니다) SMEMBERS todo
- 처리해야 할 사항이 집중된 모든 항목을 표시합니다.SREM todo "read book"
- 컬렉션에서 항목을 삭제합니다.흩어져 있다
Redis의
LIST
s와 SET
s는 프로젝트 서열을 저장하고 Redis HASH
es는 키와 값의 매핑을 저장한다.HSET person name John
- 여기서 이름은 키이고 John은 값입니다.HGET person name
- 키 이름과 관련된 값을 반환하고 이 예에서 John을 반환합니다.HGETALL person
- 개인에 대한 모든 정보를 얻습니다.HDEL person name
- name 속성을 삭제합니다.HEXISTS person name
- 속성이 있는지 확인합니다.Redis를 사용하면 사이트 속도가 30-40% 증가합니다.
Redis 설치
npm i redis
Redis 서버 시작redis-server
패키지 가져오기 및 인스턴스 생성// Import redis package
const Redis = require('redis')
// Create redis client, in case ofer development only
const redisClient = Redis.createClient()
// Incase of production pass your production instance url and use the below line
const redisClient = Redis.createClient({ url: "your-production-url"})
위에서 언급한 모든 명령을 실행하려면 위의 redisClient
실례를 사용하십시오.예컨대-redisClient.setex('photos', 3600, JSON.stringyfy(some-value-to-store))
Redis 캐시를 추가하기 전에다음 코드는 약 480ms가 걸려야 900kB 크기의 데이터를 얻을 수 있습니다.
app.get("/photos", async(req, res) => {
const albumId = req.query.albumId
const { data } = await axios.get(
"https://jsonplaceholder.typicode.com/photos"
{ params: { albumId }}
)
})
Redis 캐시를 추가한 후다음 코드는 첫 번째 추출에서 약 480ms, 순환 추출에서 37ms만 필요합니다.현재 이것은 심각한 성능 향상이다.
// Import redis package
const Redis = require('redis');
// Create redis client, in case ofer development only
const redisClient = Redis.createClient();
// Incase of production pass your production instance url and use the below line
const redisClient = Redis.createClient({ url: 'your-production-url' });
app.get('/photos', async (req, res) => {
const albumId = req.query.albumId;
redisClient.get('photos', async (error, photos) => {
if (error) console.error(error);
if (photos != null) {
return res.json(JSON.parse(photos));
} else {
const { data } = await axios.get('https://jsonplaceholder.typicode.com/photos', {
params: { albumId }
});
redisClient.setex('photos', 3600, JSON.stringyfy(data));
res.json(data);
}
});
});
위의 예에서 우리는 우선 Redis 캐시에 사진을 캐시했는지 확인하고, 사진을 캐시하면 캐시 값을 되돌려줍니다. 그렇지 않으면 API에서 사진을 가져옵니다.Redis를 주 데이터베이스로 사용
Redis는 본질적으로 매우 빠르기 때문에 추가 캐시층이 필요하지 않지만 데이터베이스의 필수적인 요구는 모델링이 복잡한 관계이다.걱정 마, 레디스가 찾아줬어.Redis는 다중 모델 데이터베이스에 사용할 수 있습니다.각종 모듈의 도움 아래, 그것은 각종 데이터베이스 범례를 지원한다.가장 인기 있는 Redis 모듈은 다음과 같습니다. -
안 급해요?이런 것들을 읽다
Reference
이 문제에 관하여(레디스 속성반.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/milindsoorya/redis-crash-course-4b7i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)