Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Ruby에서 Redis 데이터베이스를 사용하는 방법

Redis란 무엇입니까?

Redis는 다양한 종류의 데이터 구조를 사용할 수 있는 일종의 인메모리 데이터베이스입니다.

좋아요 :

  • 키/값 저장
  • 목록
  • 세트

Postgres와 같은 일반적인 SQL 데이터베이스와는 아무 관련이 없습니다.

Redis의 용도는 다음과 같습니다. :

  • 캐싱
  • 리더보드
  • 방문자 계산
  • 빠른 자동 완성 제안
  • 활성 사용자 세션 추적
  • 작업 및 메시지 대기열

Ruby 애플리케이션에서 Redis를 사용하는 방법을 살펴보겠습니다!

로컬에 Redis 설치

첫 번째:

Redis 서버를 설치해야 합니다.

다른 데이터베이스를 설치하는 것과 같습니다.

Ubuntu를 실행 중인 경우 apt install redis-server를 사용할 수 있습니다. , Mac에서는 brew install redis를 사용할 수 있습니다. &Windows 10에서는 "Linux용 Windows 하위 시스템"이 필요합니다(지침을 보려면 클릭).

서버가 가동되고 실행되면 redis-cli를 사용할 수 있습니다. 서버에 연결합니다.

<블록 인용>

참고 :redis-server를 실행해야 할 수도 있습니다. 서버에 연결하기 전에 다른 터미널에서 서버를 시작하십시오.

이제 Redis를 사용할 준비가 되었습니다!

Redis 보석 사용

redis-cli를 사용하여 Redis와 직접 상호작용할 수 있습니다. 하지만 Ruby의 Redis로 작업하려면 gem을 사용해야 합니다.

사용 가능한 보석이 몇 개 있습니다. :

  • 옥스블러드
  • 레딕
  • redis-rb

그러나 Redis 개발자가 공식적으로 권장하는 것은 redis-rb뿐입니다. .

설치 :

보석 설치 redis

gem이 설치되면 Redis 서버에 연결하여 작업을 시작할 수 있습니다.

먼저 a 키를 추가해 보겠습니다. , 1 값 .

코드는 다음과 같습니다. :

require 'redis'redis =Redis.new(host:"localhost")redis.set("a", 1)# "OK"redis.get("a")# "1"

이 gem은 Ruby 메소드를 Redis 명령에 잘 매핑하므로 어떤 명령을 사용할 수 있는지 알고 싶다면 Redis 설명서를 확인하거나 gem 설명서를 확인할 수 있습니다.

문서 작업

특정 명령의 이름을 입력하거나 데이터 구조로 검색할 수 있습니다. .

"Filter by group"을 클릭하고 "Strings"를 선택한 다음, 테스트할 명령 중 하나를 선택하십시오.

예를 들어 incr를 사용할 수 있습니다. 명령:

redis.incr("a")# "2"

또는 setex를 사용하여 자동 만료 키를 설정할 수 있습니다. :

redis.setex("베이컨", 10, 100)

여기서 두 번째 인수는 이 키가 만료되기 전 초이고 마지막 인수는 이 키의 값입니다.

:

redis.get("베이컨")# "100"

10초 후...

redis.get("베이컨")# 없음

즐겁게 탐색하고 다른 명령을 시도해보세요!

Redis에서 정렬된 집합을 사용하는 방법

Redis는 단순한 키/값 저장에 국한되지 않습니다.

강력한 데이터 구조를 제공합니다.

정렬된 집합처럼.

이를 통해 주어진 값으로 정렬된 고유한 항목 목록을 만들 수 있습니다. . 값은 Redis 설명서에서 "점수"라고 합니다.

이 세트의 상위 N개 항목을 가져오기 위해 쿼리할 수 있습니다.

따라서 이것은 리더보드에 적합합니다!

:

redis.zadd("popular_fruit", 10, "apple")# trueredis.zadd("popular_fruit", 20, "banana")# trueredis.zadd("popular_fruit", 30, "orange")# true 

이제 세트가 있으므로 최상위 항목을 쿼리할 수 있습니다.

r.zrevrange("popular_fruit", 0, 0)# ["오렌지"]

이 명령어는 :

"가장 높은 순위(0)부터 상위 아이템을 주세요."

모든 것을 원하신다면 순서대로 :

r.zrevrange("popular_fruit", 0, -1)# ["오렌지", "바나나", "사과"]

"zrevrange"의 "rev" 부분을 주목하세요. 이는 역방향을 의미하며 내림차순으로 항목을 제공합니다. .

"zrange"를 사용하면 항목을 오름차순으로 가져옵니다. .

정렬된 세트는 순위표를 뛰어넘습니다!

또 다른 방법은 빠른 자동 완성 엔진을 구축하는 것입니다. ZRANGEBYLEX 명령.

더 많은 설정 작업에 대해서는 설명서를 참조하세요.

키, 값 및 네임스페이스 이해

열도 없고 테이블도 없으며 모든 것이 하나의 일반 네임스페이스입니다.

그러면 데이터를 어떻게 구성할 수 있습니까?

키 이름 자체를 사용할 수 있습니다.

한 가지 일반적인 규칙은 콜론(: ) 일반 이름과 해당 이름의 특정 부분을 구분합니다.

예시 :

redis.set("과일:1", "사과")# OKredis.set("과일:2", "바나나")# 확인

Redis(소프트웨어)의 경우 콜론이 있는 키입니다. 이 규칙에는 특별한 것이 없습니다. 없는 키와 다를 바 없습니다. , 하지만 당신(친숙한 Ruby 개발자)에게는 데이터를 정리하는 데 도움이 됩니다.

Redis의 데이터 지속성

기본적으로 Redis는 사용자가 수행하는 모든 단일 작업을 일반 데이터베이스처럼 저장하지 않습니다.

서버를 중지할 때만 데이터를 디스크에 저장합니다.

또는 이러한 조건에서 :

  • 15분 후, 하나 이상의 키가 변경된 경우
  • 5분 후, 10개 이상의 키가 변경된 경우
  • 1분 후, 10,000개 이상의 키가 변경된 경우

이것은 dump.rdb를 생성합니다. 현재 디렉토리에 있는 파일입니다.

Redis 지속성이 SQL 데이터베이스처럼 작동하도록 하려면 매초마다 변경 사항을 저장하는 "Append Only Mode"를 활성화할 수 있습니다.

redis 구성에서 다음 줄을 추가(또는 주석 해제)하여 이 모드를 활성화합니다.

추가 전용 예

Redis를 Rails 캐시로 사용

Rails 5.2부터 Redis를 캐시 저장소로 사용할 수 있습니다.

redis만 있으면 됩니다. 보석 및 서버.

활성화하려면 :

# config/environments/production.rbRails.application.configure do config.cache_store =:redis_cache_store, { url:"redis://localhost:6379/0" }end

그러면 Rails는 모든 캐싱 요구 사항에 대해 Redis를 사용합니다.

캐시에 저장할 수도 있습니다. :

Rails.cache.write("a", 1)# "OK"Rails.cache.read("a")# 1

Rails는 다음과 같은 값을 저장합니다. :

"\u0004\bo:ActiveSupport::Cache::Entry\t:\v@valuei\u0006:\r@version0:\u0010@created_atf\u00171555005228.7954454:\u0010@expires_in0"

즉, ActiveRecord의 결과와 같이 직렬화 가능한 Ruby 객체를 저장할 수 있습니다. 쿼리.

Redis FAQ

"내 Redis 서버에 있는 모든 키를 나열할 수 있나요?"

예, keys 사용 또는 scan 명령이지만 특히 데이터베이스가 커질수록 속도가 매우 느리기 때문에 권장하지 않습니다.

"언제 Redis를 사용해야 하나요?"

사용 사례에 의미가 있을 때만. 즉, Redis 데이터 구조를 활용하여 코드를 더 쉽게 추론할 수 있습니다.

Redis가 멋지거나 인기가 있다는 이유만으로 Redis를 사용하고 싶지는 않습니다.

다른 솔루션보다 문제를 더 잘 해결할 때 사용하세요.

"Redis를 더 빠르게 만들려면 어떻게 해야 하나요?"

hiredis 설치 redis-rb 위의 gem 최대 성능을 위해.

요약

캐싱, 계산 및 대기열과 같은 적절한 상황에서 매우 유용할 수 있는 빠른 인메모리 데이터베이스인 Redis에 대해 배웠습니다.

이 기사가 재미있었다면 더 많은 사람들이 즐길 수 있도록 공유해 주세요.

읽어주셔서 감사합니다!