-
01. RedisBackEnd/redis 2021. 11. 30. 20:01반응형
Overview
해당 글에서는 Redis에 대한 개념, 자료 구조, 운영 및 Spring Boot와 Redis Java Client인 Lettuce(Non-blocking, Spring Boot 2 정식 채택)를 이용하여 프로젝트를 진행합니다.
Introduction to Redis
- 인메모리 데이터 저장소(In-Memory data structure store)
- 데이터베이스, 캐시 및 메시지 브로커로 사용되는 오픈 소스(BSD 라이선스)
- 기본적으로 key-value 저장 방식이지만, strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, 및 streams 자료 구조를 지원
- 싱글 쓰레드(Single Thread)로 원자성(Atomic) 보장 (race condition 방지)
- 데이터 만료(Expire) 시간 지정 가능
Data Structures
명령어에 대한 상세 내용은 Redis Command 참고하시면 됩니다.
Strings
key-value가 1:1 관계입니다. key를 구성할 때 단어 사이에 구분자를 사용하는 것이 좋으며 적절한 key 사이즈를 유지하는 것이 좋습니다.
- SET: SET, SETNX, SETEX, SETPEX, MSET, MSETNX, APPEND, SETRANGE
- GET: GET, MGET, GETRANGE, STRLEN
- INCR: INCR, DECR, INCRBY, DECRBY, INCRBYFLOAT
Lists
key-value가 1:N 관계입니다. value가 저장되면 key가 생성되며, key에 value가 하나도 없으면 삭제됩니다. value는 입력된 순서대로 저장되기에 중간에 값을 삽입해야할 때 사용하면 안 됩니다. 주로 큐(Queue)와 스택(Stack)으로 사용됩니다.
- SET (PUSH): LPUSH, RPUSH, LPUSHX, RPUSHX, LSET, LINSERT, RPOPLPUSH
- GET: LRANGE, LINDEX, LLEN
- POP: LPOP, RPOP, BLPOP, BRPOP
- REM: LREM, LTRIM
- BLOCK: BLPOP, BRPOP, BRPOPLPUSH
Sets
key-value가 1:N 관계입니다. value는 입력된 순서와 상관없이 저장되며, 중복되지 않습니다.
- SET: SADD, SMOVE
- GET: SMEMBERS, SCARD, SRANDMEMBER, SISMEMBER, SSCAN
- POP: SPOP
- REM: SREM
- 집합연산: SUNION, SINTER, SDIFF, SUNIONSTORE, SINTERSTORE, SDIFFSTORE
Sorted Sets
key-value가 1:N 관계입니다. score로 sort되며 중복되지 않습니다. score가 같으면 value로 sort됩니다. 단, Sorted Sets의 score는 double 타입이기 때문에 값이 정확하지 않을 수 있습니다.
- SET: ZADD
- GET: ZRANGE, ZRANGEBYSCORE, ZRANGEBYLEX, ZREVRANGE, ZREVRANGEBYSCORE, ZREVRANGEBYLEX, ZRANK, ZREVRANK, ZSCORE, ZCARD, ZCOUNT, ZLEXCOUNT, ZSCAN
- POP: ZPOPMIN, ZPOPMAX
- REM: ZREM, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZREMRANGEBYLEX
- INCR: ZINCRBY
- 집합연산: ZUNIONSTORE, ZINTERSTORE
Hashes
key-value가 1:N 관계입니다. key 하나에 여러 개의 field와 value로 구성됩니다. key 하나에 field와 value 쌍을 40억개(4,294,967,295)까지 저장 가능합니다. Hashes가 field와 value로 구성된다는 면에서 RDB의 table과 비슷합니다. Hash key는 table의 PK, field는 column, value는 value로 보면 됩니다.
- SET: HSET, HMSET, HSETNX
- GET: HGET, HMGET, HLEN, HKEYS, HVALS, HGETALL, HSTRLEN, HSCAN, HEXISTS
- REM: HDEL
- INCR: HINCRBY, HINCRBYFLOAT
[주의사항]
- 하나의 Collection에 너무 많은 아이템을 담으면 좋지 않습니다. 10,000개 이하 몇 천개 수준으로 유지하는게 좋습니다.
- Expire(만료)는 Collection의 아이템 개별로 걸리지 않고 전체 컬렉션에 걸립니다. 즉, 해당 10,000개의 아이템을 가진 Collection에 Expire가 걸려있다면 그 시간 후에 10,000개의 아이템이 모두 삭제됩니다.
Redis Operation
[참고자료]
Redis 공식 Page반응형'BackEnd > redis' 카테고리의 다른 글
03. Spring Redis Project (0) 2021.12.03 02. Redis Installation for Mac (0) 2021.11.30