💻공부 기록/📌 REDIS

[Redis] List형 명령어

SSOSSO._. 2025. 1. 12. 13:54
반응형

 

 

 

List형 명령어

이전에 포스팅한 String형 명령어에 이어서 이번엔 List형 명령어들을 정리해두려고 한다.

 

LPUSH

리스트의 왼쪽 (앞쪽)에 값을 삽입한다.

LPUSH fruits "apple"
LPUSH fruits "banana"
LPUSH fruits "cherry"
# 결과: fruits 리스트 → ["cherry", "banana", "apple"]

 

RPUSH

리스트의 오른쪽 (뒤쪽)에 값을 삽입한다.

RPUSH fruits "pair"
RPUSH fruits "grape"
# 결과: fruits 리스트 → ["cherry", "banana", "apple", "pair", "grape"]

 

LPOP

리스트의 왼쪽 (앞쪽)에서 값을 삭제하고 반환한다.

LPOP fruits
# 결과: 삭제된 값 → "cherry" / 남은 리스트 → ["banana", "apple", "pair", "grape"]

 

RPOP

리스트의 오른쪽 (뒤쪽)에서 값을 삭제하고 반환한다.

RPOP fruits
# 결과: 삭제된 값 → "grape" / 남은 리스트 → ["banana", "apple", "pair"]

 

LRANGE

리스트의 특정 범위의 값을 조회한다.

LRANGE fruits 0 -1  # 전체 조회
# 결과: ["banana", "apple", "pair"]

LRANGE fruits 0 1   # 0~1번째 조회
# 결과: ["banana", "apple"]

 

LLEN

리스트의 길이를 반환한다.

LLEN fruits
# 결과: (integer) 3

 

LINDEX

지정한 인덱스의 값을 조회한다.

LINDEX fruits 0  # 첫 번째 요소
# 결과: "banana"

LINDEX fruits -1 # 마지막 요소
# 결과: "pair"

 

LTRIM

지정한 범위의 값만 남기고 나머지를 삭제한다.

LTRIM fruits 0 1  # 0~1번째 요소만 남김
# 결과: ["banana", "apple"]

 

LREM

리스트에서 특정 값을 삭제한다.

LREM fruits 1 "banana"  # 왼쪽부터 "banana" 1개 삭제
# 결과: "apple"

 

RPOPLPUSH

첫 번째 리스트의 오른쪽 요소를 꺼내서 (RPOP)

꺼낸 값을 두 번째 리스트의 왼쪽에 삽입한다. (LPUSH)

# 초기 상태
# LPUSH fruits "apple" "banana" "cherry"
# LPUSH vegetables "carrot" "lettuce"

RPOPLPUSH fruits vegetables

# 결과
# fruits 리스트 → ["cherry", "banana"]
# vegetables 리스트 → ["apple", "lettuce", "carrot"]

 

BLPOP / BRPOP

리스트가 비어있을 때, 값이 추가될 때까지 대기 후 꺼낸다. (블로킹)

BLPOP fruits 5  # 5초 대기 후 왼쪽 값 꺼내기
BRPOP fruits 5  # 5초 대기 후 오른쪽 값 꺼내기

# 결과: 값이 있으면 즉시 반환 / 값이 없으면 5초 동안 대기

 

 

 

 

List형 고급 명령어

LMPOP

리스트에서 여러 요소를 꺼낼 때 사용한다.

LPUSH fruits "apple" "banana" "cherry"
LPUSH vegetables "carrot" "lettuce"
LMPOP 2 fruits vegetables LEFT COUNT 3
# 결과
# "cherry", "banana", "apple"를 꺼냄
# fruits → 빈 리스트
# vegetables → ["lettuce", "carrot"]

 

BLMPOP

LMPOP과 동일하지만, 대기 기능이 추가된 것이다.

BLMPOP 5 2 fruits vegetables LEFT COUNT 2
# 결과
# 최대 5초 동안 대기하며 2개의 요소를 꺼냄
리스트가 비어있으면 대기했다가 데이터가 들어오면 꺼냄

 

LINSERT

리스트의 특정 요소 앞이나 뒤에 값을 삽입한다.

LINSERT fruits BEFORE "banana" "orange"
LINSERT fruits AFTER "banana" "grape"
# 결과
# "banana" 앞에 "orange" 추가 → ["apple", "orange", "banana", "cherry"]
# "banana" 뒤에 "grape" 추가 → ["apple", "orange", "banana", "grape", "cherry"]

 

LSET

리스트의 특정 인덱스 값을 변경한다.

LSET fruits 1 "mango"
# 결과: ["apple", "mango", "banana", "grape", "cherry"]

 

LPOS

리스트에서 특정 값의 위치 (index)를 찾는다.

LPOS fruits "banana"
# 결과: (integer) 1

 

LPUSHX

존재하는 리스트의 앞에만 값을 추가한다.

(리스트가 존재하지 않으면 추가하지 않는다.)

LPUSHX fruits "peach"
# 결과
# fruits가 있을 때만 "peach" 추가
# 리스트가 없으면 아무 작업도 하지 않음

 

RPUSHX

존재하는 리스트의 뒤쪽에만 값을 추가한다.

RPUSHX fruits "plum"
# fruits가 있을 때만 "plum"을 뒤쪽에 추가
# 리스트가 없으면 변경 없음

 

LMOVE

리스트 간에 데이터를 이동한다.

(방향도 지정 가능)

LMOVE fruits vegetables LEFT RIGHT
# fruits의 왼쪽 값을 꺼내서 vegetables의 오른쪽에 추가

 

 

 

 

 

이번에도 간략히 List형과 관련된 명령어들을 정리해봤는데,

혹시나 자주 쓰이는 다른 명령어가 있다면 언제든지 알려주세요 !🥰

반응형