미소의 세상

레디스(redis)란? 본문

Web

레디스(redis)란?

짱미소 2022. 5. 11. 18:26

Redis는 오픈소스의 In-memory 방식의 데이터 저장 소프트웨어이며, 데이터베이스, 캐쉬, 메시지 브로커(message broker; 송신자의 메시지 프로토콜 형식으로부터의 메시지를 수신자의 메시지 프로토콜 형식으로 변환하는 중간 컴퓨터 프로그램 모듈)로써 사용된다.

 

Redis는 String, Hash, list, set, sorted set의 데이터 구조를 사용하고 있으며, replication(복제), Lua scripting (루아 스크립트), LRU eviction (LRU 캐싱방식), transactions (트랜잭션), and different levels of on-disk persistence (다른 레벨의 디스크 지속성)등의 사용된다.

 

Redis는 원자성 실행(atomic operation)을 할 수 있으며, 영속성(Persistency)를 지원하고, 명령어에 따라, 캐싱(LRU or LFU...)이나 지속성을 제한하고 비활성화 시킬 수 있다. memory policy는 정책에 따라 과거에 만들어진 데이터들이 삭제된다. 스냅샷(Snapshot)을 통해서, 일정시간마다 *.rdb에 저장하고, 재시작시 읽어서 원상복구하며, mariaDB에서는 기본적으로 Redis를 지원한다.

 

* LRU : Least Recently Update 방식으로, hit된 시간이 가장 오래된 것을 삭제하는 정책이다.

* LFU : Least Frequency Update 방식으로, hit된 수가 가장 적은 것부터 삭제하는 정책이다.

 

즉, RDB의 데이터 쓰기 성능을 향상시키고 싶을때, Write-Through 구조로 사용되는 경우가 많다.

Redis를 활용하는 사례로는 SNS의 좋아요를 처리하거나, 게임 서비스에서 일일 순 방문자수를 구할때, 출석 이벤트를 구현하고, 최근 검색목록을 표시할 때 등의 일시적인 데이터거나, 쓰기 속도를 높일때(RDBMS에서의 좋아요는 성능저하가 발생) 사용되는 것이다.

 

node.js에서의 경우에는 session을 관리하는데 redis를 사용하며, socket.io를 통한 실시간 채팅을 사용할 때도, cluster를 이용하여, message를 저장하고 관리하는데에도 사용한다고 한다. 

 

아마 백엔드 엔지니어라면, 한번은 들어볼 데이터 베이스이고, 빠른 성능은 충분히 서비스에 도입할 만한 메리트가 있는 오픈소스라고 생각한다.

'Web' 카테고리의 다른 글

fetch vs axios  (0) 2022.10.11
lodash 소개  (1) 2022.10.06
Vue v-for 간단예제  (0) 2022.04.06
jqgrid autowidth로 가로 꽉차게 안될때  (0) 2022.03.30
Xml, Json, Yaml 차이  (0) 2022.03.14
Comments