목록Redis (5)
solyrion
개요프로젝트를 진행하면서 인메모리 캐시를 도입해야 했던 시점이 있었습니다.처음에는 많은 개발자들이 사용하는 Redis를 선택하려고 했지만,Memcached라는 대안도 있다는 사실을 알고 두 엔진을 비교해보게 되었습니다. 특징Memcached멀티 스레드 아키텍처로 높은 병렬 처리에 강함Key-Value 기반 순수 메모리 캐시오직 문자열 기반 캐시매우 가벼움단일 목적: 빠른 읽기/쓰기RedisKey-Value 기반의 데이터 구조 서버(data structure server)문자열, Hash, List, Set, Sorted Set 등 다양한 자료구조 지원Persistence(RDB, AOF) 지원Pub/Sub, Lua Script 등 부가 기능 풍부트랜잭션 제공비교성능 (읽기/쓰기 속도) Redis ..
Redis 클러스터Redis는 빠르고 간단해서 단일 서버로 시작하기 좋은 캐싱 시스템 중 하나입니다.하지만 서비스 트래픽이 커지고, 데이터가 많아질수록 하나의 Redis로는 부족할 수 있습니다.이번 글에서는 이를 해결하기 위한 Redis 클러스터(Cluster) 구조를 정리해보려 합니다.1. 단일 Redis의 한계와 클러스터의 필요성Redis는 기본적으로 싱글 스레드 구조이기 때문에,아무리 서버 성능을 올려도 결국엔 Scale-up의 한계가 옵니다.예를 들어,트래픽이 커질수록 I/O 병목이 발생하고,Redis 서버가 죽으면 모든 캐시가 날아가며,데이터가 많아지면 한 서버 메모리에 다 들어가지 않습니다.그래서 등장한 개념이 바로 Redis Cluster입니다.👉 여러 Redis 노드가 하나의 거대한 Re..
개요실제 Redis를 Spring 서버에 어떻게 적용할 수 있는지 알아보겠습니다.Redis 서버AWS에서 제공하는 ElasticCache를 사용할 수 있습니다.로컬에서 사용한다면 간단하게 Docker를 활용해서 Redis 서버를 열 수 있습니다.(저는 개발: Docker, 배포: ElasticCache 방식으로 사용했습니다.)Spring 연동 (의존성 + application.yml)build.gradle// build.gradleimplementation 'org.springframework.boot:spring-boot-starter-data-redis'implementation 'org.springframework.boot:spring-boot-starter-cache'// 추가적으로 필요한 의존성..
개요Redis는 DB의 데이터를 메모리에 일시적으로 저장하는 공간입니다.그렇기 때문에 저장 공간이 한정적입니다. 따라서 데이터를 무한히 저장할 수는 없고,실제 DB의 데이터와 현재 캐싱되어 있는 데이터가 불일치할 수도 있기 때문에기존 데이터들이 적절히 삭제될 필요가 있습니다.이때 사용될 수 있는 방법이 TTL 값 설정입니다.TTLRedis는 데이터베이스 내의 특정 키에 대한 만료 시간을 설정할 수 있으며,이는 데이터의 유효 기간 또는 만료시간을 정의하는 데 사용됩니다.특징단위: 보통 초(second) 단위로 설정되며, 밀리초(ms) 단위도 가능 (PTTL, PEXPIRE).자동 삭제: 설정된 시간이 지나면 자동으로 데이터가 삭제되어 메모리 공간을 효율적으로 관리.데이터 수명 관리: 캐시 데이터 유지 및 ..
개요최근 직접 프로젝트를 진행하거나 다른 분들의 프로젝트를 보면 Redis가 많은 프로젝트에서 사용되는 것을 볼 수 있습니다.약간의 과장을 보태면 마치 MySQL 같은 일반 DB처럼 당연시 사용되고 있는 것 같습니다.개인적으로 그냥 사용하는 기술은 의미가 없다고 생각합니다.어떤 장점이 있길래 많은 분들이 사용하는 알아보겠습니다.Redis란?Redis(Remote Dictionary Server)는 인메모리 기반의 Key-Value 데이터 저장소입니다.데이터를 메모리에 저장하고 별도의 쿼리가 필요 없기 때문에 읽기, 쓰기 속도가 매우 빠릅니다.또한 캐싱, 세션 관리, 실시간 데이터 처리 등에서 많이 사용됩니다. 특징인메모리 데이터 저장소데이터가 디스크가 아닌 RAM에 저장되므로 접근 속도가 매우 빠름필요시..