레디스 속성반.

14447 단어 rediswebdevjavascript
Redis는 성능 향상을 위해 프로덕션 애플리케이션에 추가할 수 있는 데이터베이스 유형입니다.저는 Redis의 기본 지식을 소개하고 실제 Redis 예시를 보여 드리겠습니다.
이 문서에서는 다음과 같은 내용을 다룹니다.
  • Redis란 무엇입니까?
  • 왜 Redis를 둘러싸고 선전하는가?
  • 은 언제 Redis를 사용합니까?
  • Redis 설치
  • 기본 Redis 명령
  • 목록
  • 해시
  • Redis를 통한 사이트 속도 30-40% 향상
  • Redis를 주 데이터베이스로 사용
  • 자, 시작합시다.

    Redis란?
    Redis는 메모리의 데이터베이스로 밀리초 지연됩니다.Redis는 원격 사전 서비스를 나타냅니다.redis의 강점은 느린 디스크가 아닌 메모리에 데이터를 저장하는 데 있다.데이터베이스에 있는 모든 데이터 포인트는 키 값이 맞습니다.이 값은 다음 필드 중 하나일 수 있습니다. -
    문자열
  • - 안녕하세요 세계
  • 비트맵-0011001
  • 위역 {325} {655} {678}
  • 해시-{a: "안녕하세요", b: "세계"}
  • 목록 - [A>B>C]
  • 세트 {A, B, C}
  • 정렬 세트 {A:1, B:2, C:3}
  • 지리공간-{A:(52,2,3)}
  • Hyperlog
  • 시냇물

    왜 리디스를 둘러싸고 대대적으로 홍보하는 거죠?
    레드스는 빠른 속도로 인기를 끌었다.관계 데이터베이스와 달리, 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 설치

    기본 Redis 명령

    Startup Commands

  • redis-server - Redis 서버를 시작하려면 명령
  • Redis CLI를 사용하여 새 터미널을 열고 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의 LISTs와 SETs는 프로젝트 서열을 저장하고 Redis HASHes는 키와 값의 매핑을 저장한다.
  • 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 모듈은 다음과 같습니다. -
  • 재검색 - Redis를 통해 전체 텍스트 검색을 수행합니다.
  • RedisGraph - 희소한 인접 행렬을 사용하는 암호 기반 쿼리 언어의 그래픽 데이터베이스입니다.
  • 다시 블룸 - 신축 블룸 필터.
  • RedisJson - Redis의 JSON 데이터 유형
  • Redis AI - 서비스 로드 및 딥러닝 다이어그램을 실행하는 Redis 모듈입니다.
  • Neural redis - Redis 데이터 유형의 온라인으로 신경 네트워크를 훈련할 수 있습니다.
  • RedisTimeSeries-redis의 시간 시퀀스 데이터 구조입니다.
  • redis.io/modules의 모든 모듈을 확인합니다.에서 이러한 모듈을 사용할 수 있습니다.

    안 급해요?이런 것들을 읽다
  • My favorite algorithm (and data structure): HyperLogLog
  • What is a message broker?
  • 좋은 웹페이지 즐겨찾기