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에 대해 배웠습니다.
이 기사가 재미있었다면 더 많은 사람들이 즐길 수 있도록 공유해 주세요.
읽어주셔서 감사합니다!