[Redis] String, List

SeungJoo
|2024. 5. 1. 15:04
반응형

String

Redis의 Strings는 여러 가지 타입의 데이터를 저장할 수 있는 가장 기본적인 구조이며 Strings는 문자열, 숫자, 직렬화된 객체등 다양한 형태의 데이터를 저장할 수 있습니다.

$ SET lecture joo

Redis에서 "lecture"라는 키에 "joo"라는 값을 설정합니다. 이것은 단일 키-값 쌍을 설정하는 일반적인 명령어입니다.

$ MSET price 100 language ko

Redis에서 여러 개의 키-값 쌍을 한 번에 설정합니다. "price" 키에 100을, "language" 키에 "ko"를 설정합니다.

$ MGET lecture price language

Redis에서 여러 개의 키에 대응하는 값을 가져옵니다. 여기서는 "lecture", "price", "language" 키에 대응하는 값을 가져옵니다.

$ INCR price

Redis에서 키에 저장된 값을 1씩 증가시킵니다. 여기서는 "price" 키에 저장된 값을 1씩 증가시킵니다.

$ INCRBY price 10

Redis에서 키에 저장된 값을 지정된 숫자만큼 증가시킵니다. 여기서는 "price" 키에 저장된 값을 10만큼 증가시킵니다.

$ SET joo '{"price": "joo", "language": "ko"}'

Redis에서 문자열 형식의 JSON을 저장합니다. 여기서는 '{" price ": "100", "language": "ko"}'이라는 JSON 문자열을 저장합니다.

$ SET joo:ko:price 200

이 명령어는 Redis에서 계층 구조로 표현된 키에 값을 설정합니다. 여기서는 "joo:ko:price"라는 계층 구조를 가진 키에 200이라는 값을 설정합니다.

List

Redis의 리스트(List) 데이터 구조는 실제로 연결 리스트로 구현되어 있습니다. PUSH와 POP 연산을 O(1)의 시간 복잡도로 수행할 수 있도록 최적화되어 있습니다.

List String을 Linked List로 저장

redis의 리스트는 Linked List로 구현되어 있습니다. 요소들이 연결된 형태로 저장됩니다. 또한 각 요소가 이전 요소와 다음 요소를 가리키는 포인터로 구성됩니다.

PUSH와 POP에 최적화 O(1)

연결 리스트의 특성 때문에 리스트의 맨 앞이나 맨 뒤에 요소를 추가하거나 제거하는 작업은 매우 빠르게 수정됩니다.

리스트의 맨 앞에 요소를 추가하거나 제거하는 연산은 O(1)의 시간 복잡도를 가집니다.

Queue(FIFO) / Stack(FILO) 사용

Queue를 구현할 때는 리스트의 끝에 요소를 추가하고, 맨 앞의 요소를 제거하여 FIFO 순서를 유지할 수 있습니다.

Stack을 구현할 때는 리스트의 맨 앞에 요소를 추가하고, 맨 앞에서 요소를 제거하여 FILO 순서를 유지할 수 있습니다.

$ LPUSH queue job1 job2 job3

이 명령어는 "queue"라는 이름의 리스트의 왼쪽(맨 앞)에 "job1", "job2", "job3"라는 세 개의 요소를 차례대로 추가합니다. 이렇게 하면 요소들의 순서는 "job3", "job2", "job1"이 됩니다.

$ RPOP queue

"queue" 리스트에서 오른쪽(맨 끝)의 요소를 제거하고 반환합니다. 여기서는 "job1"이 반환됩니다.

$ LPUSH stack job1 job2 job3

"stack"이라는 이름의 리스트의 왼쪽(맨 앞)에 "job1", "job2", "job3"라는 세 개의 요소를 차례대로 추가합니다. 이렇게 하면 요소들의 순서는 "job3", "job2", "job1"이 됩니다. 이것은 Stack을 구현한 것과 유사한 구조입니다.

$ LPOP stack

이 명령어는 "stack" 리스트에서 왼쪽(맨 앞)의 요소를 제거하고 반환합니다. 여기서는 "job3"이 반환됩니다.

$ LPUSH queue job1 job2 job3

이 명령어는 이미 존재하는 "queue" 리스트의 왼쪽(맨 앞)에 "job1", "job2", "job3"라는 세 개의 요소를 추가합니다. 이전에 "queue" 리스트에는 "job3", "job2", "job1"이 있었는데, 이 명령어를 실행하면 "job3", "job2", "job1", "job1", "job2", "job3" 순서로 요소가 추가됩니다.

$ LRANGE queue -2 -1

이 명령어는 "queue" 리스트의 범위에서 -2부터 -1까지의 요소를 가져옵니다. 음수 인덱스는 리스트의 끝에서부터 역순으로 요소를 나타냅니다. 여기서는 끝에서 두 번째부터 끝에서 첫 번째 요소까지인 "job2", "job3"을 가져옵니다.

$ LTRIM queue 0 0

이 명령어는 "queue" 리스트를 잘라내어 지정된 범위만큼의 요소만 남기는 명령어입니다. 여기서는 0부터 0까지의 범위를 지정하여 리스트의 첫 번째 요소만 남깁니다. 따라서 "queue" 리스트에는 "job2" 하나만 남게 됩니다.

728x90

'DB' 카테고리의 다른 글

[Redis] Sorted Sets, Streams  (0) 2024.05.03
[Redis]Sets,Hashes  (0) 2024.05.02
REDIS  (1) 2024.04.30