Koras02
Koras02코딩웹
Koras02
전체 방문자
오늘
어제
  • 분류 전체보기 (299)
    • 백엔드 (59)
      • nestjs (2)
      • Ruby (3)
      • PostgresQL (11)
      • MySQL (5)
      • Haskell (7)
      • Koa (3)
      • Java (3)
      • Python (5)
      • Rust (5)
      • MongoDB (2)
      • PHP (3)
      • Spring Boot (1)
      • redis (5)
      • deno (2)
    • 웹서버 (3)
      • nginx (1)
      • Apache (2)
      • Google Web Server (0)
    • 모바일개발 (5)
      • Figma (0)
      • React Native (2)
      • swift (0)
      • Flutter (3)
      • Kotlin (0)
    • 프론트 엔드 (158)
      • HTML (34)
      • CSS (7)
      • Javascript (35)
      • Angular (0)
      • Typescript (2)
      • React (58)
      • Vue (2)
      • GIT (6)
      • GraphQL (1)
      • Doker (4)
      • Go (8)
      • svelte (1)
      • gatsby (0)
    • etc. (47)
      • Notion (0)
      • TIL (24)
      • Algorithm (17)
      • Algorithm 개념 정리 (2)
      • Wiki (3)
      • Official document (1)
    • 웹개념 (12)
    • 변수정리 (1)
    • VSCode (2)
    • 포트폴리오 분석 (2)
      • React (2)
    • os (5)
      • 윈도우 (4)
      • Mac (0)
      • 가상머신 (0)
      • linux (1)
    • 응용프로그램언어 (2)
      • C (2)
      • C++ (0)
      • C# (0)
    • 블로그 운영관련 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
글쓰기

공지사항

  • [공지사항] 개발 이슈나 공식문서 업데이트 업로드 예정입니⋯

인기 글

태그

  • html5
  • 알고리즘
  • mysql
  • Flutter
  • Haskell
  • 데이터 타입
  • html
  • React
  • CSS
  • go
  • 문자열
  • javascript
  • PostgreSQL
  • Til
  • 하스켈
  • Java
  • Rust
  • koa
  • 프로그래머스
  • redis

티스토리

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
Koras02

Koras02코딩웹

[Redis] Redis - Redis 리스트
백엔드/redis

[Redis] Redis - Redis 리스트

2023. 2. 8. 18:58
728x90

이번 시간에는 Redis 리스트에 대해

알아보도록 하겠습니다.

 

Redis 리스트

 

Redis list는 문자열 값에 연결된 목록으로

다음과 같은 용도로 사용됩니다.

 

  • 스택 및 대기열 구현
  • 백그라운드 작업 시스템에 대한 대기열 구축

 

Redis 리스트 사용법

 

Redis 리스트를 사용하기 위해서는 

다음과 같은 코드를 입력해줍니다.

 

  • 리스트를 대기열 처리 (처음에 입력후 출력)
> LPUSH work:queue:ids 101
(integer) 1
> LPUSH work:queue:ids 237
(integer) 2
> RPOP work:queue:ids
"101"
> RPOP work:queue:ids
"237"
  • 목록을 스택처럼 처리 (첫번째 입력, 마지막 출력)
> LPUSH work:queue:ids 101
(integer) 1
> LPUSH work:queue:ids 237
(integer) 2
> LPOP work:queue:ids
"237"
> LPOP work:queue:ids
"101"
  • 목록 길이 확인하기
> LLEN work:queue:ids
(integer) 0
  • 한 목록에서 요소를 원자적으로 팝업하고 
    다른 목록으로 표시하기
> LPUSH board:todo:ids 101
(integer) 1
> LPUSH board:todo:ids 273
(integer) 2
> LMOVE board:todo:ids board:in-prograss:ids LEFT LEFT
"273"
> LRANGE board:todo:ids 0 -1
1) "101"
> LRANGE board:in-prograss:ids 0 -1
1) "273"
  • 100개의 요소를 초과하지 않는 제한된 목록을
    만들려면 LPUSH를 호출할 때마다 LTRIM을 
    호출할 수 있습니다.
> LPUSH notifications:user:1 "You've got mail!"
(integer) 1
> LTRIM notifications:user:1 0 99
OK
> LPUSH notifications:user:1 "Your package will be delivered at 12:01 today."
(integer) 2
> LTRIM notifications:user:1 0 99
OK

 

Limits

 

Redis 목록의 최대 길이는

2 ^ 32 - 1 (4,294,967,295) 요소입니다.

 

기본 명령

  • LPUSH: 목록의 head에 새 요소를 추가합니다.
    RPUSH가 꼬리에 추가됩니다.
  • LPOP: 목록의 head에서 요소를 제거하고 반환합니다.
    RPOP는 목록의 꼬리 부분에서 동일하게 수행합니다.
  • LLEN: LLEN은 목록의 길이를 반환합니다.
  • LMOVE: LMOVE는 한 목록에서 다른 목록으로 
    요소를 원자적으로 이동합니다.
  • LTRIM: LTRIM은 목록을 지정된 범위의 
    요소를 줄입니다.

 

Blocking commands

 

리스트는 여러 블로킹 명령을 지원합니다.

예를 들면 다음과 같습니다.

  • BLPOP: BLPOP은 목록 머리글에서 요소를
    제거하고 반환합니다. 목록이 비어 있으면 요소를
    사용할 수 있게 되거나 지정된 시간 초과에 
    도달할 때까지 명령을 기다립니다.
  • BLMOVE: BLMOVE는 소스 목록에서 대상 목록으로
    요소를 원자적으로 이동합니다. 소스 목록이 비어 있으면
    새 요소를 사용할 수 있을 때까지 명령이 차단됩니다.

 

List 성능

 

List에 head나 tail에 접근하는 나열 작업은 O(1)이며,

이는 매우 효율적이라는 것을 의미합니다.

 

그러나 목록 내의 요소를 조작하는 명령은 

일반적으로 O (n)입니다. 이러한 예에는 

LINDEX, LINSERT 및 LSET이 포함됩니다.

 

이러한 명령을 실행할 때, 주로 큰 목록에서 

작업할 때 주의해야 합니다.

 

List 대안 

 

불확적한 일련의 이벤트를 저장하고 처리해야

하는 경우 Lists 대신 Redis streams를

고려해보는 것이 좋습니다.

 

참고 자료

 

Redis lists

Introduction to Redis lists

redis.io

 

'백엔드 > redis' 카테고리의 다른 글

[Redis] Redis - Redis 집합  (1) 2023.02.17
[Redis] Redis - Redis 문자열  (0) 2023.01.31
[Redis] Redis 설치하기 - Linux 기준  (0) 2023.01.30
    '백엔드/redis' 카테고리의 다른 글
    • [Redis] Redis - Redis 집합
    • [Redis] Redis - Redis 문자열
    • [Redis] Redis 설치하기 - Linux 기준
    • [redis] 공식문서 파해치기
    Koras02
    Koras02
    현재 사용중인 언어 - next-js,react,vue, typescript

    티스토리툴바