https://m.blog.naver.com/sqlmvp/221522073848
https://computerlove.tistory.com/entry/REDIS-SETNX-SETEX-MEST-MSETNX
https://velog.io/@zhyun/Redis-SET-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-SADD-SMEMBERS-%ED%95%B4%EC%95%BC%EB%90%A8
key 라고 명시된 값은 key값
value 명시된 값은 value값
set key value
=====================================================================
set log_data_1 "data123123"
=====================================================================
=====================================================================
set trace_id_12345 "{\"status\": \"complete\",\"parsing_data_log\" : [\" parsing_log_data1111111111\"],\"parsing_data_trace\" : [\" parsing_trace_data1111111111\"],\"retry\": 2,\"api\" : N}"
=====================================================================
get key
=====================================================================
get log_data_1
=====================================================================
=====================================================================
localhost:16379> get trace_id_12345
"{\"status\": \"complete\",\"parsing_data_log\" : [\" parsing_log_data1111111111\"],\"parsing_data_trace\" : [\" parsing_trace_data1111111111\"],\"retry\": 2,\"api\" : N}"
=====================================================================
rename key "newKey"
=====================================================================
rename log_data_1 "log_data_2"
=====================================================================
변경 확인
=====================================================================
localhost:16379> get log_data_1
(nil)
localhost:16379> get log_data_2
"data123123"
=====================================================================
keys 패턴
- 모든 키 검색
=====================================================================
localhost:16379> keys *
1) "log_data_2"
2) "trace_data_1"
=====================================================================
- log_로 시작하는 키 검색
=====================================================================
localhost:16379> keys log_*
1) "log_data_2"
=====================================================================
exists key
- 1 존재 , 0 미존재
=====================================================================
localhost:16379> exists log_data_2
(integer) 1
localhost:16379> exists log_data_3
(integer) 0
=====================================================================
flushall
=====================================================================
localhost:16379> flushall
OK
localhost:16379> keys *
(empty list or set)
=====================================================================
setex key second value
※ 위명령어는 deprecated 될 예정
setex 저장할키 삭제할시간 저장할값
=====================================================================
setex log_data_5 5 "data123123"
=====================================================================
set key value EX second
set 저장할키 저장할값 EX 삭제할시간
=====================================================================
set log_data_6 "data123123" EX 5
=====================================================================
ttl key
=====================================================================
ttl log_data_5
=====================================================================
mset key value key value key value
※ 계속 늘려서 사용 가능
=====================================================================
mset trace_data_1 "trace1" trace_data_2 "trace2" trace_data_3 "trace3"
=====================================================================
값 확인
=====================================================================
get trace_data_1
get trace_data_2
get trace_data_3
=====================================================================
=====================================================================
localhost:16379> mset trace_data_1 "trace1" trace_data_2 "trace2" trace_data_3 "trace3"
OK
localhost:16379> get trace_data_1
"trace1"
localhost:16379> get trace_data_2
"trace2"
localhost:16379> get trace_data_3
"trace3"
=====================================================================
mget key key key
※ 계속 늘려서 사용 가능
=====================================================================
mget trace_data_1 trace_data_2 trace_data_3
=====================================================================
=====================================================================
localhost:16379> mget trace_data_1 trace_data_2 trace_data_3
1) "trace1"
2) "trace2"
3) "trace3"
=====================================================================
- key가 이미 존재한다면 append 명령어는 기존 value값 뒤에 추가됨
- key가 존재하지 않거나 빈 문자열이면 set 명령어와 똑같이 작동함
append key value
=====================================================================
localhost:16379> set trace_data_4 "trace4"
OK
localhost:16379> get trace_data_4
"trace4"
localhost:16379> append trace_data_4 " word"
(integer) 11
localhost:16379> get trace_data_4
"trace4 word"
=====================================================================
incr : 1증가
decr : 1감소
incrby : 지정값 증가
decrby : 지정값 감소
=====================================================================
localhost:16379> set data_1 1000
OK
localhost:16379> incr data_1
(integer) 1001
localhost:16379> get data_1
"1001"
=====================================================================
decr
=====================================================================
localhost:16379> set data_2 1000
OK
localhost:16379> decr data_2
(integer) 999
localhost:16379> get data_2
"999"
=====================================================================
incrby
=====================================================================
localhost:16379> set data_3 1000
OK
localhost:16379> incrby data_3 100
(integer) 1100
localhost:16379> get data_3
"1100"
=====================================================================
decrby
=====================================================================
localhost:16379> set data_4 1000
OK
localhost:16379> decrby data_4 100
(integer) 900
localhost:16379> get data_4
"900"
=====================================================================
SADD <key> <member> [member ...]
=====================================================================
100.83.227.59:16379> set data_01 "zzzzz"
OK
100.83.227.59:16379> set data_02 "aaaaa"
OK
100.83.227.59:16379> set data_03 "bbbbb"
OK
100.83.227.59:16379> set data_04 "ccccc"
OK
100.83.227.59:16379>
100.83.227.59:16379> keys *
1) "data_04"
2) "data_03"
3) "data_02"
4) "data_01"
100.83.227.59:16379> sadd data data_01 data_02
(integer) 2
100.83.227.59:16379> SMEMBERS data
1) "data_02"
2) "data_01"
=====================================================================
SREM key member
=====================================================================
100.83.227.59:16379> SMEMBERS data
1) "data_02"
2) "data_01"
100.83.227.59:16379> SREM data data_02
(integer) 1
100.83.227.59:16379> SMEMBERS data
1) "data_01"
100.83.227.59:16379>
=====================================================================
SMEMBERS <key>
=====================================================================
100.83.227.59:16379> sadd data data_01 data_02
(integer) 2
100.83.227.59:16379> SMEMBERS data
1) "data_02"
2) "data_01"
=====================================================================
SCARD key
=====================================================================
100.83.227.59:16379> SMEMBERS data
1) "data_01"
100.83.227.59:16379> SCARD data
(integer) 1
=====================================================================
※ 데이터베이스의 테이블처럼 사용할수 있음
HSET key field value
=====================================================================
HSET log:a123 "field1" "value1" "field2" "value2"
HSET trace:a123 "field3" "value3" "field4" "value4"
=====================================================================
HGET key field
=====================================================================
hget trace:a123 field3
=====================================================================
아래의 명령어를 치면 Redis폴더의 dump.rdb 파일로 저장됨
save
※ GPT한테 물어봄
set - String, 하나의 키에 하나의 값, 중복 허용, 단일 데이터 저장
sadd- Set, 하나의 키에 여러 값, 중복 불허, 여러 값 저장, 중복 방지
set: 단일 값을 저장하고 조회할 때 사용합니다. 예를 들어, 특정 사용자 또는 객체에 대한 하나의 값을 저장할 때 적합합니다.
sadd: 중복을 허용하지 않는 여러 값들을 하나의 그룹으로 묶어 저장하고자 할 때 사용합니다. 예를 들어, 특정 상태에 해당하는 여러 개의 데이터(키)를 저장할 때 유용합니다.
자료형: String (문자열)
기능: 하나의 키에 하나의 값을 저장합니다. 기존에 같은 키가 있을 경우, 해당 값을 덮어씁니다.
매개변수:
key: 문자열 값을 저장할 키.
value: 저장할 값 (문자열 또는 직렬화된 데이터).
용도: 개별 키에 대응하는 단일 값을 저장할 때 사용합니다. 이 값은 문자열, 숫자, JSON 형식으로 직렬화된 데이터 등 무엇이든 될 수 있습니다.
자료형: Set (집합)
기능: Redis의 Set 자료형에 하나 이상의 값을 추가합니다. Set은 중복을 허용하지 않으며, 순서가 없는 유일한 값들로 구성됩니다. Set에 이미 존재하는 값은 추가되지 않습니다.
매개변수:
key: Set을 식별할 이름.
member: Set에 추가할 값(들). 한 번에 여러 값을 추가할 수 있습니다.
용도: 여러 값을 하나의 집합으로 저장할 때 사용합니다. 상태나 카테고리별로 데이터를 분류하고 관리할 때 유용합니다. 값들이 중복되면 중복을 자동으로 제거합니다.
※ 아래부터는 GPT 한테 물어본 Redis 자주 사용하는 명령어와 그 예시
######################################################################
데이터 저장/조회: SET, GET, HSET, HGET, HGETALL, SADD, SMEMBERS, LPUSH, RPUSH
데이터 관리: DEL, EXPIRE, TTL, FLUSHALL
숫자 증가/감소: INCR, DECR
대규모 데이터 탐색: SCAN
SET: 특정 키에 단일 값을 저장.
GET: 해당 키에 저장된 값을 가져옴.
=====================================================================
## 문자열 데이터 저장
SET my_key "Hello, Redis!"
## 문자열 데이터 조회
GET my_key
## 결과: "Hello, Redis!"
=====================================================================
SADD: Set 자료형에 값을 추가 (중복 방지).
SMEMBERS: Set에 저장된 모든 값을 조회.
=====================================================================
## Set에 값 추가
SADD my_set "value1"
SADD my_set "value2"
## Set의 모든 값 조회
SMEMBERS my_set
## 결과: ["value1", "value2"]
=====================================================================
HSET: Hash 자료형에서 특정 필드에 값을 저장.
HGET: Hash 자료형에서 특정 필드의 값을 조회.
HGETALL: Hash의 모든 필드와 값을 조회.
=====================================================================
## Hash에 필드와 값 저장
HSET user:1001 name "Alice"
HSET user:1001 age 30
## 특정 필드 값 조회
HGET user:1001 name
## 결과: "Alice"
## Hash의 모든 필드 조회
HGETALL user:1001
## 결과: {"name": "Alice", "age": "30"}
=====================================================================
=====================================================================
HSET user name "sungchul"
HSET user age 34
HGET user name
HGETALL user
=====================================================================
LPUSH: List의 왼쪽에 값 추가.
RPUSH: List의 오른쪽에 값 추가.
LPOP: List의 왼쪽에서 값을 제거하고 반환.
RPOP: List의 오른쪽에서 값을 제거하고 반환.
=====================================================================
## List 왼쪽에 값 추가
LPUSH my_list "value1"
LPUSH my_list "value2"
## List 오른쪽에 값 추가
RPUSH my_list "value3"
## List의 모든 값 조회 , 시작index , 종료 index (-1일경우 전부 조회)
LRANGE my_list 0 -1
## 결과: ["value2", "value1", "value3"]
## List 왼쪽에서 값 제거
LPOP my_list
## 결과: "value2"
## List 오른쪽에서 값 제거
RPOP my_list
## 결과: "value3"
=====================================================================
EXPIRE: 특정 키에 만료 시간을 설정 (초 단위).
TTL: 키의 남은 만료 시간을 조회.
=====================================================================
## my_key 키에 60초 만료 시간 설정
SET my_key "temporary value"
EXPIRE my_key 60
## my_key의 남은 만료 시간 조회
TTL my_key
## 결과: 60 (초 단위 남은 시간)
=====================================================================
DEL: 특정 키를 삭제.
=====================================================================
## 특정 키 삭제
DEL my_key
## 여러 키 삭제
DEL key1 key2 key3
=====================================================================
INCR: 해당 키에 저장된 숫자를 1 증가.
DECR: 해당 키에 저장된 숫자를 1 감소.
=====================================================================
## 숫자 값 저장
SET counter 10
## 숫자 증가
INCR counter
## 결과: 11
## 숫자 감소
DECR counter
## 결과: 10
=====================================================================
MSET: 여러 키에 값을 한 번에 저장.
MGET: 여러 키에 저장된 값을 한 번에 조회.
=====================================================================
## 여러 키에 값 저장
MSET key1 "value1" key2 "value2" key3 "value3"
## 여러 키 값 조회
MGET key1 key2 key3
## 결과: ["value1", "value2", "value3"]
=====================================================================
FLUSHALL: Redis 서버의 모든 키를 삭제.
=====================================================================
## 모든 키 삭제 (주의)
FLUSHALL
=====================================================================
SCAN: 큰 데이터셋에서 효율적으로 키를 탐색할 때 사용. 한 번에 모든 키를 반환하지 않고 부분적으로 결과를 반환함.
=====================================================================
## 모든 키를 탐색 (부분적으로 반환됨)
SCAN 0
## 결과: ["key1", "key2", ...]
=====================================================================