Redis (REmote DIctionary Server)
원격 딕셔너리 서버
cli 실행
redis-cli
데이터타입
String 타입
- Redis의 기본 데이터형
- 이진데이터 저장 가능
- 정수, 실수형 등은 없음
- 한키에 최대 512MB
기본포트
port - 6379
명령어
set
set <key> <value>
ex) set mykey "hello"
get
get <key>
ex) get mykey
mset
mset <key1> <value1> <key2> <value2> <key3> <value3>
ex) mset value1 10 value2 20 value3 30
mget
mget <key1> <key2> <key3>
ex) mget value1 value2 value3
값 증감
서버에서 변경하는 이유는
클라이언트와 트랜잭션이뤄지는 동안 값이 변경는 것을 막기위해 이 기능을 사용함
INCR (값 1 증가)
INCR <key>
ex) INCR mykey
INCRBY (특정 값 만큼 증가)
INCRBY <key> number
ex) INCRBY mykey 3
DECR (값 1 감소)
DECR <key>
ex) DECR mykey
DECRBY (특정 값 만큼 감소)
DECRBY <key> number
ex) DECRBY mykey 3
값의 문자열 길이
STRLEN mykey
ex) (세팅)set mykey "HELLO WORLD"
STRLEN mykey
명령어 상세 설명
set
- String 의 집합
- 중복을 허용하지 않음
- 삽입 순서로 저장됨
- (순서가 중요하진 않음)
- 최대 약 42억개 저장
- 성능때문에 수천개만 저장 권장
여러 맴버를 가진 Set 만들기
- Key에 value 추가
- return값은 integer인데 저장된 값의 개수를 표시해줌 (1-> 1개 저장, 0-> 0개 저장)
sadd <key> <value>
ex) saad myset "Hello"
saad myset "World"
smembers
- 멤버 보기
smembers <key>
ex) smembers myset
scard
- cardinal number 멤버 갯수
scard <key>
ex) scard myset
srem
- Remove 멤버 지우기
srem <key> <value>
ex) srem myset
sismember
- 맴버 인지 확인
- return값은 integer인데 (1-> True, 0-> False)
sismember <key> <value>
ex) sismember myset "Hello"
sunion
- set끼리 합집합
sunion <key1> <key2>
ex) sunion key1 key2
sinter
- set끼리 교집합
sinter <key1> <key2>
ex) sinter key1 key2
sdiff
- set끼리 차집합
sdiff <key1> <key2>
ex) sdiff key1 key2
sdiff key2 key1
Sorted Set
- 각 value에 Score가 추가된 Set
- Value들이 Score 순서로 정렬 되어 있음
- 범위 검색 가능
- 가장 작거나 큰 Score 값의 value 검색 가능
ZADD
- 원소 입력
- score - 정렬 기준
ZADD <key> <score> <value>
ex)
ZADD myzset 1 "one"
ZADD myzset 1 "uno"
ZADD myzset 2 "two" 3 "three"
ZRANGE
- 범위 검색
- WITHSCORES - SCORES 같이 표시하라.
ZRANGE <key> <범위1> <범위2> WITHSCORES
ex)
ZRANGE myzset 0 -1 WITHSCORES
ZRANK
- 랭크 검식 (주의 - 0부터 시작)
ZRANK <key> <value>
ex)
ZRANK myzset "two"
ZRANK myzset "one"
ZSCORE
- Score 값 확인
ZSCORE <key> <value>
ex)
ZSCORE myzset "two"
ZSCORE myzset "one"
Hash
- Field와 String의 쌍으로 이루어진 저장 구조
- Java 의 HashMap과 비슷
- 최대 약 42억개 까지 저장
HMSET
- Hash multi Set
HMSET <key> <field1> <value1> <field2> <value2>
ex)
HMSET myhash field1 "Hello" field2 "World"
HMSET myhash field3 "12345"
HGET
- Hash get
HGET <key> <filed>
ex) HGET myhash field1
HKEYS
- Hash에 key 출력
HKEYS <key>
ex) HKEYS myhash
HVALS
- Hash에 values 출력
HVALS <key>
ex) HVALS myhash
HDEL
- Hash 의 key 삭제
HDEL <key> <filed>
ex) HDEL myhash field1
HGET
- Hash 의 key 출력
HGET <hash> <key>
ex) HGET myhash field1
HINCRBY
- 지정된 값 증가
HINCRBY <key> <filed> <incremet>
ex) HINCRBY myhash field3 2
List
- List의 앞과 뒤에 데이터를 넣고 뺄 수 있음 (push/pop)
- 지정된 위치에서도 데이터를 넢고 뺄 수 있다
LPUSH
- Left Push
LPUSH <key> <value>
ex)
LPUSH mylist "world"
LPUSH mylist "hello"
RPUSH
- Right push
RPUSH <key> <value>
ex)
RPUSH mylist "one"
RPUSH mylist "two"
LPOP
- Left Pop
LPOP <key>
ex) LPOP mylist
RPOP
- Right Pop
RPOP <key>
RPOP mylist
LRANGE
- Range 출력
- 전체 출력(시작(0) - 끝(-1))
LRANGE <key> <start> <stop>
ex) LRANGE mylist 0 -1
LINSERT
- 특정 위치 기준으로 Insert
- pivot은 기준 값
LINSERT <key> <BEFORE|AFTER> <pivot> <value>
ex) LINSERT mylist BEFORE "one" "zero"
LSET
- 특정 인덱스에 Insert
LSET <key> <index> <value>
ex) LSET mylist 0 "minus_one"