# Memcached

15개의 포스트
post-thumbnail

simple-spring-memcached의 set은 왜 순차적으로 동작할까?

memcached는 우선 multi-set을 지원하지 않는다. 그래서 @ReadThroughMultiCache를 활용하여 getBulk를 하게 되는 경우, 여러 건이 캐시에 존재하지 않을 때 setBulk가 아니라 일일이 하나씩 set을 호출하게 된다. 그런데, 왜 순차적으로 호출되게 했을까? 병렬로 호출되면 안되는걸까? simple-spring-memcached의 내부를 살펴보자. set이 되는 과정 우리는 @ReadThroughMutliCache를 사용할 때, generateKeysFromResults라는 옵션을 사용하고 있다. ReadThroughMultiCacheAdvice.cacheMulti(~) 메서드 내부 124번 라인을 보면 `generateByKeysFromRes

2023년 8월 7일
·
0개의 댓글
·

Redis vs Memcached

Memcached와 Redis는 In-Memory 기반으로 동작한다는 점과, Key-Value 형태로 데이터를 저장한다는 점에서 공통적인 특성을 지니고 있습니다. 이러한 특성은 두 저장소 모두 빠르게 데이터를 처리할 수 있다는 장점으로 이어집니다. 그렇다면 어떤 차이점을 가지고 있을까요? 첫 번째는 failover(장애 극복 기능)입니다. Redis의 경우, Replication을 지원하기 때문에 서버 하나에 장애가 발생하더라도 복제된 Slave 서버를 Master로 승격시켜서 서비스를 중단 없이 운영할 수 있도록 합니다. 하지만, Memcached의 경우에는 Replication을 지원하지 않습니다. 대신에 서비스 중단을 최소화하기 위해서 'Consistent Hashing'이라는 알고리즘을 통해 여러 대의 Memcached 서버에 데이터를 분산 저장하여 관리하게 됩니다. Consistent Hashing으로 인하여 서버 1대가 장애가 발생하더라도, 나머지 노

2023년 7월 31일
·
0개의 댓글
·
post-thumbnail

[Redis] Redis와 Memcached의 차이점

Redis와 Memcached는 모두 인 메모리 데이터 스토어로서, 주로 캐싱과 데이터베이스 작업 부하를 줄이는 데 사용되지만, 다음과 같은 몇 가지 차이점이 있습니다: 1. 데이터 타입: Redis: Redis는 키-값 저장소이며, 다양한 데이터 타입을 지원합니다. 문자열, 해시, 리스트, 셋, 정렬된 집합 등 다양한 데이터 구조를 지원하여 복잡한 데이터 모델을 구축할 수 있습니다. 이러한 다양한 데이터 타입은 Redis를 관계형 데이터베이스에 가깝게 만들어줍니다. Memcached: Memcached는 단순한 키-값 저장소로, 문자열만 저장할 수 있습니다. 데이터를 저장하고 조회하는데 간단하게 사용할 수 있지만, Redis에 비해 다양한 데이터 타입과 기능이 제한됩니다. 2. 데이터 보존성: Redis: Redis는 디스크에 데이터를 저장할 수 있는 옵션을 제공하며, 디스크 스냅샷을 사용하여 데이터를 보존할 수 있습니다. 또한 백업과 복구를 지원하여 데이터 유

2023년 7월 22일
·
0개의 댓글
·

Rails Cache 적용기

레일즈의 여러가지 캐싱 기법 중 low-level 캐싱을 적용하여 우리 서비스의 체인점 리스트 API의 성능을 개선한 경험기를 공유하고자 한다. 백그라운드 체인점 리스트 API는 유저가 주문 과정의 막바지에서 집근처 안경점을 선택하는 데 사용되므로 굉장히 중요한 API이다. 그럼에도 불구하고 성능이 엉망이었다. 성능 뿐만이 아니었다. 약 800개의 체인점 리스트 데이터를 한 번에 내려주다보니 메모리 역시 많이 차지하였고, 이로인해 skylight(레일즈 특화 APM) 대시보드에는 해당 API 옆에 항상 메모리 alert이 떠있었다. 성능과 메모리 개선을 위해 여러가지 작업을 했고, 어느정도 준수할 정도의 개선을 이뤄냈으나, 완벽하진 않았다. 이에 캐싱을 적용하여 추가적인 성능 개선을 할 필요를 느끼게 됐다. 캐싱을 적용하고자 한 이유는 해당 데이터가 아래와 같은 특징을 갖고 있어서였다. 데이터의 쓰기 작업보다는 읽기 작업이 현저히 많다. 가맹점 수가 폭발적으로

2023년 6월 6일
·
0개의 댓글
·

[CS] Redis vs Memcached

Redis 와 Memcached 공통점 인메모리 저장소(In Memory 저장소) Key-Value 저장 방식 차이점 | | Redis | Memcahed | | :- | - |:- | | 데이터 타입 | String, Set, Sorted Set, Hash, List| String | | 데이터 저장 | Memory, Disk | Only Memory | | 메모리 재사용 | 재사용 X | LRU 알고리즘 | | 스레드 | Single Thread | Multi Thread | | 캐시용량 | Key, Value 모두 512MB | Key name 250 byte, Value 1MB | Redis 의 특징 다양한 데이터 구조 지원 (List, Set, Sorted Set, Hash 등) Snapshots 지원 : 특정 시점에 데이터를 디스크에 저장하여 파일 보관 가능, 장애상황시 복구에 사용할 수 있다. 복

2023년 5월 24일
·
0개의 댓글
·
post-thumbnail

이것도 캐시, 저것도 캐시... Cache는 대체 뭘 칭하는 것일까?

서론 system 설계를 하다가 'Cache'라는 용어를 잘못 사용하다가 멘토에게 지적을 받은 적이 있다. 상황을 대략 설명하자면, system에 Spring으로 구현한 WAS가 여럿 있었고, 거기에 세션을 관리할 Redis가 붙어있었는데, 그 Redis를 '웹캐시'라고 칭하다가 지적을 받은 것이다. 구글에 '캐시 DB'라고 검색하면 Redis에 대한 블로그 글이 많이 나온다. 그러다보니 'Redis = 캐시 DB'라고 잘못 인식한 것 같다. 하지만 엄연히 따져보니, Redis는 캐시 DB가 아니다. Redis는 캐시의 역할을 할 수 있는 in-memory DB인 것이다. 즉, Redis를 캐시로 사용할 순 있어도 Redis 그 자체를 캐시라고 칭하는 건 잘못된 것이다. 또한, 설령 잘못 칭한다 하더라도 Redis를 그냥 '캐시'라고 칭했으면 됐을 텐데, 하필 이것을 '웹 캐시'라고 말했기 때문에 더욱 잘못된 용어를 사용하여 혼돈을 가중시켰다. '웹 캐시'는 후술하겠지

2023년 3월 2일
·
0개의 댓글
·
post-thumbnail

DAY30

1. Algorithm Study 2. Backend Class Trigger 트리거(Trigger)는 특정 테이블에 INSERT, DELETE, UPDATE 같은 DML 문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램 ▶︎ 사용자가 직접 호출하는 것이 아니라, 데이터베이스에서 자동적으로 호출하는 것이 가장 큰 특징 🎈요즘은 Trigger를 DB에서 직접 적용하기보다는 가급적이면 Javascript단에서 적용하는 편 Index 인덱스(= 책갈피)는 테이블을 빨리 조회하기 위해 테이블 데이터에 포인터를 주는 검색 방법 >- 옵티마이저: 검색을 효율적으로 해주는 DB 내장기능 실행계획: 효율적인 검색 계획 Explain 명령어: 옵티마이저가 결정한 실행결과를 볼 수 있는 명령어 주의!‼️ 빠른 검색을 위해 모든 컬럼에 인덱스를 적용하게 되면 데이터를 등록, 수정할 때 마다 정렬을 시도하기 때문

2022년 12월 16일
·
0개의 댓글
·

[AWS] ElastiCache Redis and Memcached

ElastiCache Redis and Memcached aws에서 제공하는 인메모리 데이터베이스 엘라스틱캐시의 두가지 방식에 대해서 서술해보려고 한다. 자세한 내용은 추후에 적도록 하겠다.... ElastiCache ElastiCache(이하 앨라스틱캐시)는 완전관리형 인 메모리 캐싱 서비스이다. 일반적으로 구하는데 비용(시간)이 많이드는 데이터 등을 캐시해서 성능을 개선하기 위해 많이 사용된다. 앨라스틱캐시를 사용하려면 Redis(이하 레디스) 또는 Memcached(이하 멤캐시드) 중 하나를 선택해서 사용해야 한다. Redis vs Memcached 레디스와 멤캐시드 둘 다 인 메모리 데이터베이스로 Key-Value 스토어 이다. |특징|Memcached|Redis| |--|--|--| |Sub-millisecond latency|O|O| |Developer ease of use|O|O| |Data partit

2022년 11월 15일
·
0개의 댓글
·
post-thumbnail

Redis가 사랑받는 이유에 대하여

이번에 쓸 포스트는 사람들이 많이 사용하는 메모리 기반의 DB인 레디스에 대한 글이다. 그 전에 알아볼 것이 정말 많다. 모든 것을 설명하면서 진행을 하므로 글이 상당히 길다. 대표적인 데이터베이스의 종류 3가지. >대표적인 데이터베이스에는 RDB, NoSQL, In-Memory DB로 총 세가지가 존재하는데 간단하게 특징을 확인해보고, 본론인 Redis(In-Memory DB)에 대해 알아보려고 한다. 1. RDB의 특징 (관계형 데이터베이스) HDD 혹은 SSD같은 보조기억 장치에 데이터를 저장한다. 행과 열이 존재한다, 쉽게 생각해서 엑셀과 같다. 데이터를 저장하는 공간의 형식이 정해져있다. 관계라는 것을 통하여 데이터와의 연결고리를 만든다. 중복되는 데이터가 없고, 관계를 통하여 관련된 값을 한번에 변경할 수 있다. SQL이라는 언어를 사용해야만 데이터에 접근할 수 있다. 관계라는 속성때문에 성능을 향상시키기 위해서는 하드

2022년 6월 24일
·
2개의 댓글
·
post-thumbnail

Redis vs Memcached

개요 e-commerce 대용량 서버 프로젝트에서 세션 불일치 문제를 해결하기 위해 session storage방식으로 데이터를 관리하기로 정하였습니다. 이러한 In-memory DB인 Redis와 Memchaced중에서 세션 저장소로 어떤 것이 적합할지 비교해 보려고 합니다. 1. Memcached (1) 장점 1) 서버 한 대에 장애가 발생해도 문제가 발생하지 않으며, 검색시간이 짧습니다. Memcached 자체에는 분산기능이 없지만 Memcached의 라이브러리인 Consistent Hashing을 통해서 데이터를 분산합니다. <img width="711" src="https://user-images.githubusercontent.com/31584255/154432640-4fc592d1-e96c-458b-9a0a-7a

2022년 1월 25일
·
0개의 댓글
·
post-thumbnail

Session Storage? Redis : Memcached

앞선 포스팅에서 다루었던 다중 서버 환경 세션 불일치 문제 해결하기 위해서 별도의 세션 스토리지를 구성하여 세션의 정합성 문제를 해결하려고 할 때, 과연 세션 스토리지로 적합한 데이터베이스는 무엇이 있을까요? 우선 데이터베이스는 크게 SQL(RDB)와 NOSQL을 생각할 수 있습니다. SQL(RDB) Oracle Database MySql PostgreSQL Microsoft SQL Server NOSQL MongoDB Redis HBase Azure Cosmos DB 선택기준 비인가된 사용자 포함한 모든 사용자가 접근할 수 요청과 다르게 인가된 사용자만 접근할 수 있는 요청을 처리할 때는 매번 세션 저장소에서 해당 로그인 세션이 존재하는지 확인하는 작업을 진행해야 하므로 성능에 악영향을 주지 않도록 빠르게 세션 정보를 찾아서 제공해야 합니다.

2021년 12월 28일
·
0개의 댓글
·
post-thumbnail

ARCUS Operator on Kubernetes

최근 많은 기업들이 어플리케이션 아키텍처로서, 기존 모노리스 아키텍처 방식을 버리고 마이크로 서비스 아키텍처를 도입하면서 자연스럽게 소프트웨어의 운영 방식에도 많은 변화가 일어났습니다. 수많은 서비스들을 빠른 시간내에 배포하는 작업이 빈번히 요구되는 운영 환경 조건들을 충족해줄 수 있는 컨테이너 기술들이 인기가 많아짐에 따라 자연스레 분산 컨테이너 환경을 자동화할 수 있도록 돕는 대표적 오케스트레이션 툴인 Kubernetes를 점차 활용하고 있는 추세입니다. Kubernetes의 스케줄링, 스케일링, 자가 회복, 리소스 관리 등 어플리케이션 서비스의 운영 자동화를 위한 컨테이너 오케스트레이션 기술이 주는 이점은 무궁무진합니다. 하지만 기존 On-Premise 환경에 구동되고 있는 어플리케이션, 외부 솔루션들을 Kubernetes로 이전하기 위한 작업은 쉽지

2021년 6월 28일
·
0개의 댓글
·
post-thumbnail

초보 개발자가 대규모트래픽에 대응하는 과정(Redis vs Memcached)

In-Memory_DB를 선택한 이유 in memory-db는 말 그대로 메모리에 DB를 저장합니다. 따라서 메모리 계층구조에 의해서 disk based db보다 빠릅니다. > 저희는 사용자의 정보를 session storage 방식으로 관리하기로 했습니다. 여기서 In-Memory-DB를 선택한 이유는 앞서 설명드린데로 성능이 빠르다는것과 유저의 로그인 체크 정도의 기능은 반드시 영속성이 필요하지도 않고 저장공간이 많이 필요하지도 않기 때문에 유저의 session 정보는 in-memory-db에 저장하는 방식을 선택했습니다. Redis vs Memcached 그렇다면 이제 인메모리디비의 대표 주자인 redis와 memcached에 대해 알아보자. Redis Redis는 NoSql이면서 많은

2021년 3월 28일
·
0개의 댓글
·

[Linux] Telnet으로 Memcached 정보 조회하기

2020 12 08 Memcached 서비스를 조회할 때 기본적으로 프로그래밍 언어로 외부 라이브러리를 사용해서 할 수도 있다. 하지만 가장 Raw하게 조회하려면 리눅스에서 Memcached Server로 붙어서 조회를 할 수도 있었다. 로컬 서버에 Memcached 서버를 설치하고 여기에 접속하는데, 이 때 사용하는 것이 Telnet이었다. ssh로도 접속할 수 있었지만 간편한 telnet을 사용했다. 텔넷은 또 어떤 것들에 사용할 수 있는지, 특징은 어떤게 있는지 알아보자. Telnet 개요 > 텔넷 은 인터넷이나 로컬 영역 네트워크 연결에 쓰는 네트워크 프로토콜이다. telnet이라는 용어는 프로토콜의 클라이언트 일부 기능이 추가된 소프트웨어를 일컫는다. UNIX 시스템에서 대부분 사용 가능하다. TCP/IP 스택을 갖춘 네트워크 장비와 운영체제들은 몇가지 종류의 텔넷 서비스를 지원한다. telnet의 보안 문제 때문에 SSH로

2020년 12월 23일
·
0개의 댓글
·

[Database] Memcached

2020 12 03 로그인을 구현하려고, 쿠키 & 세션을 찾아보다가 Memcached 시스템을 접하게 되었다. 레디스나 카산드라같은 캐시라는데, 나는 캐시를 써본 적도 없고, 어떤 것인지 정확하게 이해가 안가서 일단 Memcached 가 무엇인지 찾아보았다. 정의 > 범용 분산 캐시 시스템. 외부 데이터 소스의 읽기 횟수를 줄이기 위해 데이터와 객체들을 RAM에 캐시 처리함으로써 동적 데이터베이스 드리븐 웹사이트의 속도를 높이기 위해 종종 사용 된다. 필요량보다 많은 메모리를 가지고 있을 때, 시스템으로부터 더 쉽게 가져다 사용할 수 있도록 만들어 줌. DB나 API 호출 또는 페이지 렌더링 등에서 받아오는 데이터를 Key-Value 형태로 메모리에 저장 Memcached, Redis :: 개인적인공간 장점 시스템의 사용되지

2020년 12월 23일
·
0개의 댓글
·