본문 바로가기
개발/redis

[Redis] Redis Data

by 적아38 2021. 8. 23.
728x90

[출처] http://kimpaper.github.io/2016/07/27/redis-datatype/

 

redis data type 종류 - 기록 저장소

Redis Data Type 요약 인터넷상에 수많은 좋은 자료가 있음에도 공부 차원에서 정리를 한다 테스트는 redis-cli를 이용해서 하지만 실제 사용은 언어에 맞는 api library를 사용 할듯 개요 http://redis.io/topic

kimpaper.github.io

Redis Data Type 요약

인터넷상에 수많은 좋은 자료가 있음에도 공부 차원에서 정리를 한다

테스트는 redis-cli를 이용해서 하지만 실제 사용은 언어에 맞는 api library를 사용 할듯

개요

http://redis.io/topics/data-types-intro

예제

http://redis.io/topics/data-types

Strings

  • value에 문자 숫자 등을 저장한다
  • 저장시 별도로 형이 없다 (숫자 문자 구분이 없음)
  • 숫자도 저장가능 하다 그리고 숫자에 incr, incrby, decr, decrby 같은 atomic counter 연산이 가능
  • incrby, decrby 는 특정 수를 더하거나 뺄때 사용 incrby "test_strings" 10 처럼 사용

# redis-cli

127.0.0.1:6379> set "test_strings" 1

OK

127.0.0.1:6379> get "test_strings"

"1"

127.0.0.1:6379> incr "test_strings"

(integer) 2

127.0.0.1:6379> get "test_strings"

"2"

127.0.0.1:6379>

Lists

  • value에 list를 저장한다
  • lrange: 값을 조회 이때 -1은 모두 가져오라는 뜻

127.0.0.1:6379> lpush test_lists 1

127.0.0.1:6379> lpush test_lists 2

127.0.0.1:6379> lrange test_lists 0 -1

1) "2"

2) "1"

127.0.0.1:6379> rpush test_lists 3

(integer) 3

127.0.0.1:6379> lrange test_lists 0 -1

1) "2"

2) "1"

3) "3"

  • rpop를 이용하여 queue 구현이 가능할꺼 같다

127.0.0.1:6379> rpop test_lists "3"

127.0.0.1:6379> lrange test_lists 0 -1

1) "2"

2) "1"

  • rbpop을 이용하면 순차적인 분산 작업도 구현 가능할꺼 같다 rpop과 비슷하나 데이타가 없다면 데이타가 들어올때까지 block 상태로 대기한다

Sets

  • value을 set형태로 가지고 있음
  • list는 중복이 되나 set은 중복이 안됨

127.0.0.1:6379> sadd test_sets 1

(integer) 1

127.0.0.1:6379> smembers test_sets

1) "1"

127.0.0.1:6379> sadd test_sets 1 2 3 4

(integer) 3

127.0.0.1:6379> smembers test_sets

1) "1"

2) "2"

3) "3"

4) "4"

Hashes

  • Hashs key/value 목록을 값으로 가진다

127.0.0.1:6379> hset htest username "hi"

(integer) 1

127.0.0.1:6379> hset htest userpwd "asdf"

(integer) 1

127.0.0.1:6379> hget htest username

"hi"

127.0.0.1:6379> hgetall htest

1) "username"

2) "hi"

3) "userpwd"

4) "asdf"

  • hget시에 값이 없다면 (nil)을 반환

127.0.0.1:6379> hget htest temp

(nil)

  • hashkey에 대한 값을 바꿈

127.0.0.1:6379> hget htest userpwd

"asdf"

127.0.0.1:6379> hset htest userpwd 1234

(integer) 0

127.0.0.1:6379> hget htest userpwd

"1234"

Sorted sets

  • value를 set형태로 가지고 있음
  • Sets과 마찬가지로 중복은 안됨
  • score와 함께 저장되며 score를 기준으로 정렬됨
  • list처럼 사용이 될꺼 같으나 정렬된다는 장점이 있는 것 같다

127.0.0.1:6379> zadd test_ssets 1 1

(integer) 1

127.0.0.1:6379> zadd test_ssets 2 2

(integer) 1

127.0.0.1:6379> zrange test_ssets 0 -1

1) "1"

2) "2"

  • score를 문자형으로 쓰면 안된다

127.0.0.1:6379> zadd test_ssets "a" 2

(error) ERR value is not a valid float

  • 중복이 안되면 동일한 value를 넣으면 기존 데이타의 score를 덮어서 데이타 순서가 바뀐다

127.0.0.1:6379> zadd test_ssets "0" 2

(integer) 0

127.0.0.1:6379> zrange test_ssets 0 -1

1) "2"

2) "1"

Bitmaps

  • bit값을 저장해준다
  • 512MB 용량으로 2^32(42억)개의 bit값들을 저장할 수 있다
  • boolean 옵션값을 저장하는 용도로 사용하면 좋을거 같다 (회원마다 공지 조회여부 등)

127.0.0.1:6379> setbit test_bits 0 1

(integer) 0

127.0.0.1:6379> getbit test_bits 0

(integer) 1

127.0.0.1:6379> setbit test_bits 0 0

(integer) 1

127.0.0.1:6379> getbit test_bits 0

(integer) 0

728x90

'개발 > redis' 카테고리의 다른 글

Redis 설치  (0) 2023.03.02
[redis]레디스(RDM - GUI for Redis)  (0) 2021.09.01
[redis] aws elasticache redis, 코드이그나이터  (0) 2021.08.23

댓글