Redis -1

🐷Jinie (juniorDeveloper)·2021년 10월 8일
0

redis

목록 보기
1/1

# Redis

[ 용어정리 ]

* Cache Hit?
  Cache 서버에 Cache가 있으면 바로바로 클라이언트에게 응답을 준다.

* CDN(콘텐츠 전송 네트워크)
  CDN은 지리적으로 분산된 여러 개의 서버
  웹 콘텐츠를 사용자와 가까운 곳에서 전송함으로써 전송 속도를 높인다.

1. Redis 란 ?

  • 싱글 스레드 → 명령어를 한개밖에 처리할 수 없으므로, 뭔가 처리가 오래걸리는 명령어가 먼저오면 뒤의 명령어 처리가 지연될 수 있다. (ex. Keys 명령어)
  • 매우빠른 비관계형 database
  • SQL database에 비해 퍼포먼스가 200배 향상될 수 있다.
  • 5개의 데이터구조를 가진다 → String, List, Set, Sorted-set(ZSet), Hash
  • in-memory database
In-Memory DB vs. Disk Resident DB

 - In-Memory는 Dist에 비해 최소의 CPU를 사용하고 보다 단순한 search 알고리즘을 사용할 수 있음
 - In-Memory는 recovery만을 위한 최소 I/O를 사용하고 disk는 CRUD 전체를 위해 I/O를 사용
 - In-Memory는 휘발성이며 disk는 비휘발성이다
   : 때문에 cache server로 사용하는 redis의 경우 존재하는 server가 문제가 생기면
     데이터가 날아갈 위험을 가지고 있다.
 - 인메모리는 locking을 coarse-grained하게 하며, Disk는 fine-grained하게 한다.
    * coarse-grained -> 덩어리로 작업 -> 빠르고 단순한 최적화 / 데이터를 확장하기에는 한계
		* fine-grained -> 잘게 쪼개서 작업 -> 쉽게 확장가능하고 안정적 / 복잡한 구조로 인해 느림
  • NoSQL/ non-relational
  • 테이블도 없고, 데이터베이스 정의나 관계도 없음
memcached 와의 비교
공통점 : high-performance /key-value
차이점 :
redis는  In-memory non-relational DB -> Collection 제공
memcached는 In-memory key-value cache -> keys to values

* 여기서 mongoDB와의 차이점은 뭘까?
 mongoDB는 onDisk non-relational DB 이다.

2. Why Redis?

  • memcached 를 사용한다고 가정하면 → memcached 는 Collection이 없다. 그 말은 즉 List 형태를 사용하고 싶다면 string에 계속 append 해나가야 한다. 그래뭐 더하는거까진 좋은데 지우고싶으면? 단, memcached 는 redis보다 빠르다.
  • redis는 atomic 하고, 빠르고, query문을 작성할때 parser/optimizer를 사용할 필요도 없다.

3. Collections : STRINGS, LISTS, SETS, ZSET, HASH

  • 자세히 보기

    3-1. STRINGS : key-value store

    GET : 값가져오기
    SET : 저장하기
    DEL : 삭제하기
    set hello redis
    > OK
    
    get hello
    > "redis"
    
    del hello
    > 1 (integer) -> 삭제된 item의 숫자

    3-2. LISTS

    • 양 끝의 값을 꺼내기에는 빠르지만, 가운데 값을 꺼내는데는 시간이 소요되므로 사용에 주의해야함

      RPUSH   :  리스트의 오른쪽 끝에 값 넣기
      LRANGE  :  범위안의 값들 가져오기
      LINDEX  :  특정 위치의 값 가져오기
      LPOP    :  왼쪽의 값 pop and return
      rpush list-key item
      > 1 -> 이때 결과로 반환되는 숫자는 현재 리스트의 길이
      
      rpush list-key item2
      > 2
      
      lrange list-key 0 -1
      > item
        item2
      
      lindex list-key 1
      > item
      
      lpop list-key
      > item2 -> pop 후에는 사라짐

      3-3. SETS : 중복된 값을 허용하지 않는다.

    • Lists와 비슷하다.

    • hash table을 사용해 unique

    • 비 순차적이다.

profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

0개의 댓글