Redis redis-cli

redis-cli 설치

mocOS 환경에 homebrew로 설치하는 방법은 아래와 같다.

brew tap aoki/redis-cli
brew update && brew doctor
brew install redis-cli

github.com/aoki/homebrew-redis-cli

서버 제어

redis-cli 접속

호스트명과 포트번호를 생략하면, localhost의 6379로 접속된다.

$ redis-cli

원격 접속은 아래와 같이 하면 된다.

$ redis-cli -h #{호스트명} -p #{포트번호}

그밖에 주요 옵션은 아래와 같다.

  • -n : database 번호
  • -a : 비밀번호
  • -s : 소켓
  • -u : 서버 url 등 접속 시 다양한 옵션 설정이 사용 가능하다.

서버 정보 조회

redis-cli info
> info
# Server
redis_version:6.0.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:ffd199d8341c2d8f
redis_mode:standalone
... 이하 생략 ....

연결된 클라이언트 목록 조회

> client list

연결된 클라이언트 연결을 끊기

> client kill 10.0.0.8:33333

명령 실행 후에 받은 요청을 모두 덤프

redis-cli monitor
> monitor
OK

Key 조작

key, value 설정

set {key명} {value}
> set key01 value01
OK

key로 value 조회

get {key명}
> get key01
value01

key 목록 조회

> keys *
key01

key 삭제

> del key01
1

key가 존재하는지 확인 (1이라면 참)

exists {key명} {value}
> exists key01
0

키가 이미 존재하지 않으면 데이터를 세트

setnx {key명} {value}
> setnx key01 value02
1
> setnx key01 value02
0

결과가 0이면 키가 존재하기 때문에 데이터가 업데이트되지 않았다는 것을 의미한다

기존 key명 변경

rename {이전 key명} {새로운 key명}
> rename key01 key02 
OK
> rename key03 key04
ERR no such key

현재 데이터베이스의 키 개수를 반환

> dbsize
2

특정 key를 다른 데이터베이스로 이동

> move key01 1
1

DB 번호 선택

> select 1
OK

현재 데이터베이스의 키를 모두 삭제하기

> flushdb
OK

모든 데이터베이스의 키를 모두 삭제하기

> flushall
OK

정규식

Redis에서 사용할 정규 표현식은 다음 만

  • [] : 괄호 안의 문자 중 하나 하나
  • * : 임의의 문자열
  • ? : 단일 문자

사용 예

# 모든 Key 목록을 조회한다.
$ keys *

# 숫자로 시작하는 키를 조회한다.
$ keys [0-9]*

Multiple Key

여러 key 값을 모와서 설정

> mset key01 value01 key02 value02 key03 value03 
OK

여러 key 값을 한번에 조회

> mget key01 key02 key03
value01
value02
value03

expire

유효 기간을 설정하여 키를 설정

아래 예제는 60초로 설정하였다.

> setex key01 60 value01 
OK

기존의 키 만료 설정

> expire key02 30

Math

key 값에 1 더하기

아래 예제에서는 key02에 1을 설정하고 1을 증가 시킨다.

> set key02 1 
OK
> incr key02 
2

key 값에 지정된 수를 더하기

> incrby key02 100 
102

key 값에 1 빼기

> decr key02 
101

key 값에 지정된 수를 빼기

> decrby key02 51 
50

List

List의 맨 위에 값을 추가

공백으로 구분하여 여러 값을 지정 가능하다.

> lpush list01 value01
1

List의 끝에 값을 추가

공백으로 구분하여 여러 값을 지정 가능하다.

> rpush list01 value02
2

List 요소의 수를 반환

> llen list01
2

List에서 지정 번호의 요소를 반환

> lindex list01 0
value01

List에서 지정한 시작 번호부터 끝 번호까지의 요소를 반환

> lrange list01 0 1
value01
value02

List의 지정 번호의 요소를 지정된 값으로 변경

> lset list01 1 value03
OK
> lindex list01 1
value03

List의 첫 번째 요소를 반환하고 삭제

> lpop list01
value01

List의 마지막 요소를 반환하고 삭제

> rpop list01
value03

List에서 지정한 시작 번호부터 끝 번호까지의 요소에 잘라낸 형태로 그 목록을 변경

> ltrim list01 1 3
OK

Hash

부모 Key (key) 자식 Key (field) 값 (value)에 의해 관리되는 데이터 형식이다. 예를 들어, 부모 Key를 제품 ID 하위 키를 제품 속성 정보를 저장하는 방식으로 사용하면 RDB의 데이터 관리에 가까운 사고 방식에서 사용할 수 있다.

Hash 지정 필드에 값을 추가

> hset hash01 field01 value01
(integer) 1

Hash 지정 필드의 값을 반환

> hget hash01 field01
"value01"

Hash의 여러 필드에 추가

> hmset hash01 field02 value02 field03 value03
OK

해시의 여러 필드의 값을 반환

> hmget hash01 field01 field02 field03
value01
value02
value03

Hash 필드를 모두 반환

> hkeys hash01
field01
field02
field03

Hash 필드의 값을 모두 반환

> hvals hash01
value01
value02
value03

Hash 지정 필드의 값을 지정 수 플러스

> hincrby hash01 field04 100
101

Hash 지정 필드가 존재하는지 확인

> hexists hash01 field01
1

Hash 필드 수를 반환

> hlen hash01
4

Hash 지정 필드를 제거하려면

> hdel hash01 field04
1

그밖에 조작

keys를 사용하지 못할때 key 검색하는 방법

scan 0 match devkuma-* count 1000

key 이름은 wildcard 검색할 수 있고, devkuma-*devkuma-로 시작하는 키를 검색한다.




최종 수정 : 2024-01-18