개요
인프런 실전! Redis 활용 강의를 듣고 정리한 포스팅이다.
redis의 자료형에 대해 알아보고 익숙해지기 위해 예시 코드를 작성해보도록 한다.
Redis 자료형 특징
- 데이터 타입에 따라 명령어가 다르다.
- 대소문자 구별을 하지 않기 때문에 명령어를 대문자/소문자 구분없이 작성 가능하다.
Strings
문자열, 숫자, serialized object(JSON) 등 여러 자료형을 저장하는 Strings Type이다. 레디스는 int, Integer 등 별도의 숫자 관련 자료형 없이 모두 strings로 저장한다. strings로 저장되어도 사칙 연산이 가능하다. (Java를 가장 많이 쓰는 입장에서 이 점이 젤 신기했다.)
Strings 명령어
- SET
lecture라는 변수에 “inflearn-redis”라는 문자열 값을 부여한 것이다. 1편에서 레디스는 해시 테이블로, key-value 쌍인 구성이라고 하였다. 이러한 특성을 통해 key값으로 value값을 도출할 수 있다.
- MSET, MGET
여러 값을 set, get할 수 있다.
- 숫자 형태 Strings 저장할 때
INCR : 숫자형 string 값을 +1
INCRBY: 숫자형 string값을 지정한 만큼 +n
SET price 10
INCR price # price: 11
INCRBY price 9 # price: 20
- JSON 직접 저장
SET inflearn-redis '{"price": 100, "item": "abc"}'
# key: inflearn-redis
# value: JSON objects
- redis에서는 일반적으로 key를 만들 때 의미별로 콜론을 통해 구별한다.
SET inflearn-redis:ko:price 200
Lists
Strings를 Linked List로 저장하는 데이터 타입으로, Double Linked List로 구현되어 있어, 그 특성에 맞게 양 끝에서 데이터를 조작할 수 있다. 즉, 양끝에서의 push/pop에 최적화되어있다. 상수 복잡도((O(1))을 갖는다.
명령어를 통해 레디스의 리스트를 조작해보자.
1. LPUSH와 RPOP 조합으로 queue 조작하기
LPUSH queue job1, job2, job3
RPOP queue # jop3
2. LPUSH와 LPOP 조합으로 stack 조작하기
LPUSH stack job1, job2, job3
LPOP stack # job3
3. LRANGE를 통해 다수의 아이템 조회하기
LPUSH stack job1, job2, job3
LRANGE queue -2 -1 # 인덱스가 -2인것부터 -1인 것까지 즉, 가장 먼저 추가된 것과 그 다음 것 조회
LRANGE queue 0 -1 # 처음부터 마지막까지 모두 조회
LTRIM queue 0 1 # 인덱스가 0인 것부터 1인 것까지만 남기고 모두 삭제
Sets
정렬 없이, 중복되지 않은 string을 저장하는 집합이다.
1. 집합 생성 및 원소 추가 명령어
- person1이라는 집합에 apple, banana, orange 원소 추가. (grape라는 중복 요소를 추가했지만 하나만 추가된다.)
sadd person:1:favorite apple, banana, grape, grape
2. 집합 조회
smembers person:1:favorite # apple, banana, grape
3. 집합 Cardinality(특정 집합의 유니크한 개수) 조회
scard person:1:favorite
4. 특정 아이템 포함 여부 조회
- 1(true) 또는 0(false) 반환
sismember person:1:favorite banana
sismember person:1:favorite melon
5. Set Operation
person2라는 집합에 apple, melon을 생성 및 추가한 상황에서의 person1과 집합 연산
- sinter: 교집합
- sdiff: 차집합(앞에 선언된 집합 - 뒤에 선언된 집합)
- sunion: 합집합
'DevOps > DevOps' 카테고리의 다른 글
[Redis] Redis 4편. 운영 방식과 호스팅 (0) | 2024.01.08 |
---|---|
[Redis] Redis 3편. Spring Boot와 Redis | Lettuce, RedisTemplate, RedisRepository (1) | 2024.01.08 |
[Redis] Redis 1편. 개념과 특징, 설치 및 간단한 사용법 (2) | 2024.01.04 |
[Docker] Docker Container OS와 VM | Docker Image Layer (1) | 2023.11.09 |
[DevOps] 인스턴스 접속 시 ssh key 접근 불가 해결 | ssh 없이 인스턴스 사용하기 (2) | 2023.11.08 |