redis 배우기 - TRY REDIS
아래는 https://try.redis.io/의 프로그램을 진행하면서 배운 내용을 정리한 것입니다.
0. redis
1. set, get
키, 값 쌍을 입력하는 방법: set
$ set [key] [value]
키, 값 쌍을 불러오는 법 - 키의 값을 알고 있을 때: get
$ get [key]
=> [value]
2. incr, del
특정 키에 대해서 값을 정수 단위로 증가(+1) 시키는 것: incr
$ set [key] 10
$ incr [key] => 11
$ incr [key] => 12
특정 키와 값을 삭제 하는 것: del
$ set [key] 10
$ del [key]
$ set [key] 'hey'
$ get [key] => 'hey'
3. expire, ttl
키, 값 쌍을 만료시키는 방법: expire
$ set [key] [value]
$ expire [key] 120
120초 뒤에 [key] [value]는 만료된다.
만료되기 까지 남은 시간과 상태를 나타내는 명령어: ttl
$ttl [key] => 113
// 120초가 모두 지난 뒤
$ttl [key] => -2
-2는 키 값 쌍이 만료되어 존재하지 않음을 나타낸다
키 값의 재등록과 이 때의 ttl 상태
$set [key] [value]
$expire [key] 120
$ttl [key] => 118
// 120초 뒤에
$ttl [key] => -2
$set [key] [value`]
$ttl [key] => -1
4. rpush, lpush, llen, lrange, lpop, rpop
리스트 타입 데이터에 관련된 명령어 들이다. 리스트는 순서가 있는 복수 값의 묶음이다.
5. sadd, srem, sismember, smembers, sunion
세트 타입 데이터에 관련된 명령어 들이다. 세트는 순서가 없고 값의 중복이 없는 값의 묶음이다.
6. zadd, zrange
정렬된 세트에 대한 명령어이다. 정렬된 세트는 세트와 비슷하지만 스코어라는 값을 가지고 있으며 이를 기준으로 정렬을 하게 된다.
7. hset, hgetall, hmset, hget
해시에 대한 명령어이다. 해시는 문자 필드와 문자 값 사이의 맵(지도)이다. 이는 객체를 나타내기에 완벽한 데이터 타입이다.
8. hincrby, hdel
해시 필드의 값 중 수와 관련된 것들은 문자를 다루는 것과 다르지 않다. 명령어들은 원자적으로 실행된다.
$ hset [key] [field] 10
$ hincrby [key] [field] 1 => 11
$ hincrby [key] [field] 10 => 21
$ hdel [key] [field]
$ hincrby [key] [field] 1 => 1
- redis는 메모리에 기록되는 nosql 기반의 데이터베이스이다.
- 메모리에 저장되기 때문에 입출력이 빠르다
- 빠른 입출력으로 상태 관리에 사용되기도 한다.
- nosql로 키, 값 쌍을 갖는다
1. set, get
키, 값 쌍을 입력하는 방법: set
$ set [key] [value]
키, 값 쌍을 불러오는 법 - 키의 값을 알고 있을 때: get
$ get [key]
=> [value]
2. incr, del
특정 키에 대해서 값을 정수 단위로 증가(+1) 시키는 것: incr
$ set [key] 10
$ incr [key] => 11
$ incr [key] => 12
특정 키와 값을 삭제 하는 것: del
$ set [key] 10
$ del [key]
$ set [key] 'hey'
$ get [key] => 'hey'
* 원자적 실행: atomic operations
클라이언트 입장에서 개별적으로 key에 함수를 걸어 value를 증가시키면 각 클라이언트가 함수를 호출하는 대로 value가 바뀌게 된다. 하지만 우리는 클리이언트 입장보다 데이터베이스의 입장으로 value가 증가하기를 원한다. 이러한 관점에서의 실행을 원자적 실행이라고 하고 redis는 다양한 원자적 실행을 제공한다.
클라이언트 입장에서 개별적으로 key에 함수를 걸어 value를 증가시키면 각 클라이언트가 함수를 호출하는 대로 value가 바뀌게 된다. 하지만 우리는 클리이언트 입장보다 데이터베이스의 입장으로 value가 증가하기를 원한다. 이러한 관점에서의 실행을 원자적 실행이라고 하고 redis는 다양한 원자적 실행을 제공한다.
3. expire, ttl
키, 값 쌍을 만료시키는 방법: expire
$ set [key] [value]
$ expire [key] 120
120초 뒤에 [key] [value]는 만료된다.
만료되기 까지 남은 시간과 상태를 나타내는 명령어: ttl
$ttl [key] => 113
// 120초가 모두 지난 뒤
$ttl [key] => -2
-2는 키 값 쌍이 만료되어 존재하지 않음을 나타낸다
키 값의 재등록과 이 때의 ttl 상태
$set [key] [value]
$expire [key] 120
$ttl [key] => 118
// 120초 뒤에
$ttl [key] => -2
$set [key] [value`]
$ttl [key] => -1
4. rpush, lpush, llen, lrange, lpop, rpop
리스트 타입 데이터에 관련된 명령어 들이다. 리스트는 순서가 있는 복수 값의 묶음이다.
rpush: 리스트 순서의 끝에서 [argument]를 추가. 리스트 타입 키 값을 만들 때는 rpush [key] [value]로 시작하거나 lpush [key] [value]로 시작한다.
lpush: 리스트 순서의 시작에서 [argument]를 추가. 리스트 타입 키 값을 만들 때는 rpush [key] [value]로 시작하거나 lpush [key] [value]로 시작한다.
llen: 리스트의 길이를 출력
lrange: [argument]를 2개를 정수 숫자로 갖는다. 리스트 순서의 시작에서부터 따져서 전자의 순서부터 후자의 순서까지 출력한다. 후자의 값이 -1일 때는 리스트의 끝까지 출력한다.
lpop: 리스트 순서의 시작에서부터 값을 하나씩 빼어서 출력한다. (출력되는 값은 리스트에서 삭제된다)
lpush: 리스트 순서의 시작에서 [argument]를 추가. 리스트 타입 키 값을 만들 때는 rpush [key] [value]로 시작하거나 lpush [key] [value]로 시작한다.
llen: 리스트의 길이를 출력
lrange: [argument]를 2개를 정수 숫자로 갖는다. 리스트 순서의 시작에서부터 따져서 전자의 순서부터 후자의 순서까지 출력한다. 후자의 값이 -1일 때는 리스트의 끝까지 출력한다.
lpop: 리스트 순서의 시작에서부터 값을 하나씩 빼어서 출력한다. (출력되는 값은 리스트에서 삭제된다)
5. sadd, srem, sismember, smembers, sunion
세트 타입 데이터에 관련된 명령어 들이다. 세트는 순서가 없고 값의 중복이 없는 값의 묶음이다.
sadd: 세트 타입 키에 값을 추가 한다. 세트 타입을 만들 때는 sadd [key] [value]로 시작한다.
srem: 세트 타입에 값을 삭제한다. sadd [key] [value]
sismember: 세트 타입에 값이 있을 경우 1을 출력하고 없으면 0을 출력한다. sismember [key] [value]
smember: 세트 타입의 모든 멤버를 출력한다. smember [key]
sunion: 2개 이상의 세트를 융합하여 하나의 세트를 출력한다. sunion [argument_1] [argument_2]...
srem: 세트 타입에 값을 삭제한다. sadd [key] [value]
sismember: 세트 타입에 값이 있을 경우 1을 출력하고 없으면 0을 출력한다. sismember [key] [value]
smember: 세트 타입의 모든 멤버를 출력한다. smember [key]
sunion: 2개 이상의 세트를 융합하여 하나의 세트를 출력한다. sunion [argument_1] [argument_2]...
6. zadd, zrange
정렬된 세트에 대한 명령어이다. 정렬된 세트는 세트와 비슷하지만 스코어라는 값을 가지고 있으며 이를 기준으로 정렬을 하게 된다.
zadd: 정렬된 세트 타입에 값을 추가한다. 정렬된 세트 타입을 만들 때는 zadd [key] [score] [value]로 시작한다.
zrange: [argument]를 2개를 정수 숫자로 갖는다. 정렬된 세트의 값의 스코어를 기준으로 순서의 시작에서부터 따져서 전자의 순서부터 후자의 순서까지 출력한다. 후자의 값이 -1일 때는 순서의 끝까지 출력한다.
zrange: [argument]를 2개를 정수 숫자로 갖는다. 정렬된 세트의 값의 스코어를 기준으로 순서의 시작에서부터 따져서 전자의 순서부터 후자의 순서까지 출력한다. 후자의 값이 -1일 때는 순서의 끝까지 출력한다.
7. hset, hgetall, hmset, hget
해시에 대한 명령어이다. 해시는 문자 필드와 문자 값 사이의 맵(지도)이다. 이는 객체를 나타내기에 완벽한 데이터 타입이다.
hset: 해시에 값을 추가한다. hset [key] [field] [value]. 해시는 hset [key] [filed] [value]로 시작한다.
hgetall: 해시의 모든 값을 불러온다. hgetall [key]
hmset: 해시에 복수의 필드와 값을 등록한다.
hmset [key] [field_1] [value_1] [field_2] [value_2] [field_3] [value_3]
hget: 해시에서 필요한 필드의 값을 불러온다. hget [key] [field]
hgetall: 해시의 모든 값을 불러온다. hgetall [key]
hmset: 해시에 복수의 필드와 값을 등록한다.
hmset [key] [field_1] [value_1] [field_2] [value_2] [field_3] [value_3]
hget: 해시에서 필요한 필드의 값을 불러온다. hget [key] [field]
8. hincrby, hdel
해시 필드의 값 중 수와 관련된 것들은 문자를 다루는 것과 다르지 않다. 명령어들은 원자적으로 실행된다.
$ hset [key] [field] 10
$ hincrby [key] [field] 1 => 11
$ hincrby [key] [field] 10 => 21
$ hdel [key] [field]
$ hincrby [key] [field] 1 => 1
댓글
댓글 쓰기