Redis 101: 기초 및 핵심 개념


Redis는 데이터베이스 게임에서 이미 한동안 사용되었다.다음과 같은 토론의 여러 가지 요인으로 인해 이런 인기는 줄곧 증가하고 있다.하지만 시작하기 전에 Redis가 무엇인지 알아야 합니다.
따라서 파일 상태에 따라

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker.



솔직히 이 정의는 이해하기 어렵다.그러나 나는 본문이 끝날 때 네가 그것을 정확하게 이해할 것이라고 확신한다.
NoSQL 데이터베이스가 무엇인지 이해하는 것부터 시작하겠습니다.NoSQL 데이터베이스는 행과 열 이외의 다른 형식으로 데이터를 저장하는 데 사용됩니다.그것들은 본질적으로 상관없는 데이터를 저장하는 데 광범위하게 사용된다.
예를 들어 두 개의 시계 Person과 Mobile_Phones를 고려하면 이 두 시계는 종종 관계가 있다(한 사람이 하나 이상의 휴대전화를 가질 수 있다).따라서 데이터 간의 관계가 필요한 장면에서 SQL 데이터베이스를 선택합니다.
다른 장면을 고려하면 그 중에서 저장할 데이터는 가구와 이동전화 등 두 가지 모델의 항목을 가지고 있다.상술한 데이터에는 이런 관계가 없다는 것이 분명하다.따라서 이러한 데이터를 NoSQL 데이터베이스에 저장하면 전반적인 성능이 향상될 수 있습니다.
관계 데이터베이스의 예제에는 MySQL, PostgreSQL이 포함됩니다.한편, MongoDB, Redis, Neo4j 등은 NoSQL 데이터베이스의 예입니다.

Redis는 데이터를 저장하기 위해 서로 다른 데이터 구조를 가지고 있습니다.하나하나 탐색해 봅시다.

꿰미


이것은 모든 유형의 기본 유형이다.모든 값은 문자열로 저장할 수 있습니다.
SET name fido
우리는 문자열을 키 값 쌍으로 저장합니다.

키 값 쌍


Redis에서 가장 사용하기 쉬운 데이터 구조는 키 값 쌍에 문자열을 저장하는 것입니다.

SET name fido
GET name
// fido
Javascript 객체 또는 Python 사전을 잘 알고 있는 경우다음과 같이 볼 수 있습니다.
{
  name: "fido"
}

목록



목록은 실제로 특정 순서에 따라 저장된 문자열 목록입니다.N개의 항목으로 구성된 집합을 만들려고 할 때, 목록도 유용합니다. 보통 맨 위나 밑에 있는 항목만 방문하거나, N이 매우 시간적입니다.랜덤 액세스가 느리기 때문에 완료하려면 O(N)가 필요합니다.
목록에는 RPUSH, LPUSH, LLEN, LRANGE, LPOP 및 RPOP 등의 명령이 있습니다.이 명령들은 특정한 조작 목록을 실행하는 데 도움이 된다.
# RPUSH puts the new value at the end of the list.
RPUSH friends "Alice"
# LPUSH puts the new value at the start of the list.
LPUSH friends "Bob"
LRANGE는 목록의 하위 집합을 제시했다.이것은 읽어들일 첫 번째 요소의 인덱스를 첫 번째 인자로 하고, 읽어들일 마지막 요소의 인덱스를 두 번째 인자로 합니다.
LRANGE friends 0 -1
LLEN이 체인 테이블의 길이를 반환합니다.
LPUSH friends "Alice"
LPUSH friends "Bob"
LLEN friends  # => 2
LPOP와 RPOP은 각각 시작과 끝에서 (POP) 요소를 삭제합니다.
# RPOP pops the value from the end of the list.
RPOP friends
# LPOP pops the value at the start of the list.
LPOP friends "Bob"

집합


집합과 목록 사이의 차이점은 집합이 저장하는 요소가 목록과 다르다는 것이다.
집합은 무질서한 데이터 집합이다.원소 사이에 집합되어 실행되는 교체는 목록보다 빠르다.
집합은 교차, 병렬 집합 등 복잡한 조작을 지원하기 때문에 데이터가 있고 출력을 얻기 위해 변환을 원할 때 "계산"방식으로 Redis의 좋은 데이터 구조를 사용합니다.
컬렉션에서 요소를 추가, 삭제 및 찾는 데 O(1) 개의 시간이 필요합니다.
소집합은 매우 효과적인 방식으로 인코딩된다.
많은 집합 명령에서, 우리는 SADD, SREM, SISMEMBER, SMEMBER에 대해 토론할 것이다.
SADD 집합에 구성원 추가
SADD superpowers "flight"
SREM 컬렉션에서 구성원 제거
SREM superpowers "flight"
SISMEMBER는 지정된 값이 컬렉션에 있는지 테스트합니다.값이 존재하면 1을 반환하고, 존재하지 않으면 0을 반환합니다.
SISMEMBER superpowers "flight"  # => 1
SISMEMBER superpowers "height"  # => 0
SMEMBERS는 컬렉션의 모든 요소를 반환합니다.
SMEMBERS superpowers # => "flight", "height"

정렬 세트


Sorted sets are the only other data structures, besides lists, to maintain ordered elements.


정렬 집합은 더 강한 목록과 같아서 목록에서 삽입, 삭제, 가져오는 범위가 항상 빠르다.그러나 그들은 더 많은 메모리를 사용하고 O (N) 데이터 구조를 사용한다.
ZADD 명령은 지정된 분수를 가진 모든 지정된 멤버를 키에 저장된 정렬 세트에 추가하는 데 사용됩니다.ZRANGE는 컬렉션의 모든 요소 - 1을 표시하여 컬렉션의 마지막 색인을 나타냅니다.
ZADD mycolorset 1 white
ZADD mycolorset 2 black
ZRANGE mycolorset 0 -1

#white
#black
만약 우리가 색인 두 곳에 다른 요소를 삽입한다고 가정하자.색인 2에 놓인 요소는 다음 색인으로 옮겨지고 새 요소는 그 대신 옮겨집니다.
ZADD mycolorset 2 yellow
ZRANGE mycolorset 0 -1
#white 
#yellow
#black
요소를 삭제하려면 다음과 같이 ZREM을 사용할 수 있습니다.
ZREM mycolorset yellow
그러면 정렬 세트에서 요소가 제거됩니다.

해시


산열은 어떤 사물에 대한 집합 정보를 저장하는 데 쓰인다.우리는 더 잘 이해하기 위해 예시를 토론합시다.
그것들은 문자열 필드와 문자열 값 사이의 매핑을 충당한다.따라서 이들은 대상을 나타내는 완벽한 데이터 형식이다.
Redis에서는 해시당 최대 40여 억 개의 필드 값 쌍을 저장할 수 있습니다.
HMSET person name "John Doe" 
designation "Backend Engineer" likes 20 shares 23
위의 코드 세그먼트에서 우리는 HMSET를 사용하여 해시를 저장한다.보시다시피 다른 분야가 사람과 관련이 있습니다.
HGETALL로 모든 데이터를 검색하도록 하겠습니다.
HGETALL person 
1) name
2) John Doe
3) designation
4) Backend Engineer
5) Likes
6) 20
7) shares
8) 23
현재 우리는 이미 기본 데이터 유형을 소개했다.Redis의 용례를 살펴보겠습니다.
여러 가지 용도를 제외하고는 Redis가 유행하는 용례가 있습니다. 예를 들어
  • 캐시 레이어 데이터베이스
  • 게시/구독
  • 어떤 물건을 얻는 상부 분석
  • 메시지 대기열
  • 우리 간단명료하게 모든 문제를 토론합시다.

    캐시 레이어 데이터베이스:


    Redis는 메모리 저장소로서 캐시로 사용할 수 있으며 사용자 세션이나 기타 관련 세부 사항을 저장하는 데 사용됩니다.
    Redis는 캐시 레이어 데이터베이스로 사용되는 매우 높은 데이터 읽기 성능을 가지고 있습니다.
    주 데이터베이스 맨 위에 있습니다.

    게시 / 구독:


    Redis Pub/Sub는 메시지 전달 시스템을 구현하여 이 시스템에서 발표자는 메시지를 보내고 구독자는 메시지를 수신합니다.
    메시지를 전송하는 체인을 통로라고 한다.구독자는 장면에 따라 여러 명의 게시자를 구독할 수 있다.
    PUBLISH chat Hi there
    SUBSCRIBE chat
    

    일부 컨텐트의 맨 위 분석을 가져오려면 다음과 같이 하십시오.


    우리는 최고급 사용자, 최고급 트렌드 또는 어떠한 가장자리 제품도 얻을 수 있다.가장자리를 보면 목록의 맨 위나 밑에 있는 모든 내용을 의미합니다.
    예를 들어 우리가 어떤 사용자가 있다고 가정하면 그들은 약간의 점수를 가지고 있다.따라서 정렬 세트에 쉽게 저장하고 다음을 검색할 수 있습니다.
    ZRANGE user_scores 0 10 WITHSCORES
    
    상술한 조회는 각각 상위 10위 사용자와 그 점수를 되돌려줍니다.이러한 장면에서 Redis는 go-to 데이터베이스입니다.

    메시지 대기열:


    Redis는 일반 프로그래밍의 대기열 개념과 같습니다.여러 프로세스가 실행 중이면push와pop을 사용하여 메시지 대기열을 실행할 수 있습니다.

    많은 라이브러리에서 Redis 대기열을 처리하는 데 편리하고 향상된 기능을 제공합니다.
    이것은 Redis의 세계에 대한 간략한 소개이며, 아직 해야 할 일이 많다explore.나는 당신이 한번 시도해 보라고 강력히 건의합니다this.

    Good luck and don’t forget to like and share

    Have any questions? just want to say 👋

    좋은 웹페이지 즐겨찾기