Redis 설치 & 사용

key-value store 를 찾던중 Redis(http://redis.io/)를 보는데 설치, 사용, 문서가 딱 마음에 든다.
쓰고 싶게 만드는구나. 내가 만들었던 플랫폼들을 보면서 약간의 반성과 교훈을 얻은듯

# 설치
$ wget http://redis.googlecode.com/files/redis-2.6.9.tar.gz
$ tar xzf redis-2.6.9.tar.gz
$ cd redis-2.6.9
$ make


# 서버 실행
$ src/redis-server


#클라이언트 실행
$ src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"


# 튜토리얼 (10분)
http://try.redis.io/

# 튜토리얼 정리
> SET foo bar
> GET bar

- SETNX (SET-if-not-exists) 키가 없을때만 값을 셋팅
- INCR 키를 자동증가

SET connections 10
INCR connections => 11
INCR connections => 12
DEL connections
INCR connections => 1

아래같은 상황을 위해 만든거라고 한다.
1. Client A reads count as 10.
2. Client B reads count as 10.
3. Client A increments 10 and sets count to 11.
4. Client B increments 10 and sets count to 11.

원하는건 12여야 하는데 결과는 11이라는거지. 그런데 이걸 이렇게 구현하나?

- EXPIRE, TTL
SET resource:lock "Redis Demo"
EXPIRE resource:lock 120 // 120초 후에 사라짐

TTL을 이용해 expired time이 얼마 남았는지도 확인 가능, 삭제되는데까지 남은 시간(초) 리턴
TTL이 -1 이면 만료되지 안는다는 의미


- 구조체 - List
RPUSH, LPUSH, LLEN, LRANGE, LPOP, RPOP
RPUSH friends "Tom"
RPUSH friends "Bob"
LPUSH friends "Sam"

LRANGE friends 0 -1 => ["Sam","Tom","Bob"]
LRANGE friends 0 1 => ["Sam","Tom"]
LRANGE friends 1 2 => ["Tom","Bob"]

- 구조체 - Set
SADD, SREM, SISMEMBER, SMEMBERS, SUNION
순서와 중복을 제외하고는 LIST와 비슷하다.

redis 127.0.0.1:6379> sadd sfoo bar
(integer) 1
redis 127.0.0.1:6379> sadd sfoo bar
(integer) 0

"sfoo"라는 키가 유일시된다.
redis 127.0.0.1:6379> sismember sfoo bar
redis 127.0.0.1:6379> sadd sfoo kwangsub

redis 127.0.0.1:6379> smembers sfoo
1) "bar"
2) "kwangsub"

redis 127.0.0.1:6379> sadd sfoo kwangsub
redis 127.0.0.1:6379> sadd sfoo2 soomers
redis 127.0.0.1:6379> sadd sfoo2 taejin

redis 127.0.0.1:6379> sunion sfoo sfoo2
1) "soomers"
2) "bar"
3) "taejin"
4) "kwangsub"


- 구조체 - Sorted Set
redis 127.0.0.1:6379> ZADD hackers 1940 "Alan Kay" //3순위
redis 127.0.0.1:6379> ZADD hackers 1953 "Richard Stallman" // 4순위
redis 127.0.0.1:6379> ZADD hackers 1965 "Yukihiro Matsumoto" // 5순위
redis 127.0.0.1:6379> ZADD hackers 1916 "Claude Shannon" //2순위
redis 127.0.0.1:6379> ZADD hackers 1969 "Linus Torvalds" // 6순위
redis 127.0.0.1:6379> ZADD hackers 1912 "Alan Turing" //1순위

redis 127.0.0.1:6379> ZRANGE hackers 2 4 // 0~ 5 까지
1) "Alan Kay"
2) "Richard Stallman"
3) "Yukihiro Matsumoto"


# API, 명령어
http://redis.io/commands


아 깔꼼하다.
Redis replication 쪽도좀 정리해봐야겠다.
http://redis.io/topics/replication


댓글

이 블로그의 인기 게시물

Protopage.com

Android, MediaPlayer IllegalStateException 상황