- Published on
redis cli 자주쓰는 명령어 32가지
- Authors
- Name
- hongreat
- ✉️hongreat95@gmail.com
redis cli 를 사용하는 경우는 생각보다 많지 않아서 막상 쓰려고하면 뭐가 있었나 헷갈리곤 합니다.
자주쓰는 redis cli 명령어 32가지를 정리했습니다.
1. redis cli : 일반 명령어
Redis를 처음 사용할 때 필요한 기본 명령어들입니다.
Redis 서버의 상태를 확인하고, 기본 설정을 조정하는 데 사용됩니다.
- PING: 서버가 실행 중인지 확인합니다.
PONG
으로 응답합니다. - INFO: 서버의 정보와 통계를 보여줍니다.
- CONFIG GET: 런타임 설정을 조회합니다.
- CONFIG SET: 설정을 변경합니다.
- KEYS: 특정 패턴과 일치하는 모든 키를 나열합니다.
- FLUSHDB: 현재 데이터베이스의 모든 키를 삭제합니다.
- FLUSHALL: 모든 데이터베이스의 모든 키를 삭제합니다.
2. redis cli 데이터 타입별 명령어
Redis는 다양한 데이터 타입을 지원합니다.
각 데이터 타입에 대한 특징과 주요 명령어를 살펴보겠습니다.
2.1. 문자열(String)
Redis는 기본적으로 모든 데이터를 문자열로 저장합니다. 하지만 그 문자열이 숫자라면? 숫자 처럼 취급해 더하거나 뺄 수 있습니다.
예를 들어, "1"이라는 문자열을 저장하면 내부적으로는 숫자 1 처럼 동작할 수 있습니다.
SET mykey "1" # 문자열로 저장하지만...
INCR mykey # 이 명령을 사용하면 1이 더해져 124가 됨
- SET: 키에 문자열 값을 할당합니다.
- GET: 키에 저장된 문자열 값을 검색합니다.
- INCR: 키의 값을 1 증가시킵니다.
- DECR: 키의 값을 1 감소시킵니다.
2.1.1 예시
redis> SET mykey "10"
"OK"
redis> INCR mykey
(정수) 11
redis> GET mykey
"11"
redis> INCR mykey
(정수) 12
redis> GET mykey
"12"
2.2. 리스트(List)
LPUSH 명령어는 지정된 키에 저장된 리스트의 맨 앞에 값을 추가하는 명령으로, 리스트가 없으면 빈 리스트를 생성한 후 값을 넣습니다. 여러 값을 한 번에 추가할 수도 있습니다. 예를 들어, LPUSH mylist h i y는 "y", "i", "h" 순서로 리스트의 앞쪽에 추가됩니다. => ["y" "i" "h"]
- LPUSH: 리스트의 왼쪽에 요소를 추가합니다.
- RPUSH: 리스트의 오른쪽에 요소를 추가합니다.
- LPOP: 리스트의 왼쪽에서 요소를 제거하고 반환합니다.
- RPOP: 리스트의 오른쪽에서 요소를 제거하고 반환합니다.
- LRANGE: 리스트의 특정 범위의 요소를 조회합니다.
2.2.1 예시
redis> LPUSH mylist "world"
(integer) 1
redis> LPUSH mylist "hello"
(integer) 2
redis> LRANGE mylist 0 -1
1) "hello"
2) "world"
redis> LPUSH mylist "myname is inyeong"
(integer) 3
redis> LRANGE mylist 0 -1
1) "myname is inyeong"
2) "hello"
3) "world"
redis> LPUSH mylist h i y
(integer) 6
redis> LRANGE mylist 0 -1
1) "y"
2) "i"
3) "h"
4) "myname is inyeong"
5) "hello"
6) "world"
2.3. 셋(Set) 혹은 세트
셋은 요소를 추가/조회 할 수 있습니다. 특정 요소의 존재 여부를 확인할때 사용하기도 하며, 0과 1로 존재 여부를 확인할 수 있습니다.
- SADD: 셋에 하나 이상의 멤버를 추가합니다.
- SMEMBERS: 셋의 모든 멤버를 조회합니다.
- SISMEMBER: 멤버가 셋의 일부인지 확인합니다.
- SREM: 셋에서 하나 이상의 멤버를 제거합니다.
2.3.1 예시
redis> SADD myset "one"
(integer) 1
redis> SISMEMBER myset "one"
(integer) 1
redis> SISMEMBER myset "two"
(integer) 0
redis> SADD myset "two"
(integer) 1
redis> SISMEMBER myset "two"
(integer) 1
2.4. 해시(Hash)
해시는 필드-값 쌍의 컬렉션입니다. 각 해시는 여러 개의 필드-값 쌍을 저장할 수 있습니다 셋과 유사하지만 조금더 복잡한 데이터를 저장하는데 적합합니다.
- HSET: 해시에 필드와 값을 저장합니다.
- HGET: 해시에서 특정 필드의 값을 검색합니다.
- HGETALL: 해시의 모든 필드와 값 조회합니다.
- HDEL: 해시에서 특정 필드를 삭제합니다.
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
redis> HGET myhash field1
"Hello"
redis> HGET myhash field2
"World"
이렇게 키값 field1 등을 HGET하면 개별로 나옵니다.
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HGETALL myhash
1) "field1"
2) "Hello"
3) "field2"
4) "World"
하지만 HGETALL 을 하게 되면, flatten(?)하게 나오게 됩니다.
2.5. 정렬된 셋(Sorted Set)
Sorted Set은 순서가 중요한 경우에 유용합니다.
- ZADD: 정렬된 셋에 멤버를 추가합니다.
- ZRANGE: 정렬된 셋에서 범위에 해당하는 범위를 가져옵니다.
- ZREM: 정렬된 셋에서 멤버를 제거합니다.
추가로 알아야할 것에는 WITHSCORES 이 있습니다.
2.5.1 예시
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 1 "하나"
(integer) 1
redis> ZADD myzset 2 "two" 3 "three"
(integer) 2
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "하나"
4) "1"
5) "two"
6) "2"
7) "three"
8) "3"
redis> ZRANGE myzset 0 1 WITHSCORES
1) "one"
2) "1"
3) "하나"
4) "1"
- "하나"라는 데이터를 1이라는 동일한 순위 추가할 수 있습니다.
- 여러개 를 넣는 것도 가능합니다.
- ZRANGE로 순위처럼 매길수도 있습니다.
2.6. 비트 연산(Bitwise)
직접 사용할 일이 많지 않을 수도 있지만, 비트 연산을 수행할 때 유용합니다. 비트 연산은 데이터를 압축하고, 빠른 계산을 수행할 수 있겠죠.
간단한 예시로 살펴보겠습니다. AND 연산 (&): 두 비트가 모두 1일 때만 결과 비트가 1이 됩니다. (ex: 1010 & 1100 = 1000)
OR 연산 (|): 두 비트 중 하나라도 1이면 결과 비트가 1이 됩니다. (ex: 1010 | 1100 = 1110)
- SETBIT: 문자열 값의 특정 비트를 설정합니다.
- GETBIT: 문자열 값의 특정 비트를 가져옵니다.
2.6.1 예시
redis> SETBIT mykey 7 1
(integer) 0
redis> SETBIT mykey 7 0
(integer) 1
redis> GET mykey
""
주의 할 점은 SETBIT 명령어의 반환값은 이전 비트 값입니다. 여기서 (integer) 1은 비트가 이전에 1이었다는 의미입니다. 반대로, (integer) 0은 비트가 이전에 0 이었다는 것을 의미합니다.
3. redis cli 기타 명령어
자주쓰지는 않지만 알아두면 유용한 명령어입니다.
- EXPIRE: 키의 만료 시간을 설정합니다.
- TTL: 키의 남은 만료 시간을 초 단위로 반환합니다.
- PERSIST: 키의 만료 시간을 제거합니다.
Redis CLI를 잘 사용하면 데이터 관리와 서버 모니터링에 도움이 됩니다. Redis 사용법에 대한 더 많은 정보를 원하신다면, 공식 문서를 참고하세요. 공식문서나 실험에 대한 링크는 하단의 링크 섹션을 참고하세요.