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