Server (21) 썸네일형 리스트형 1. RabbitMQ RabbitMQ를 사용할 때 참고하기 위해 작성한 글 Abstract RabbitMQ는 AMQP 스펙을 따르는 Message Broker이다. AMQP를 기반으로 구현됐지만 MQTT, STMOP, XMPP 등의 다양한 프로토콜을 사용할 수 있지만 AMPQ기반으로 사용하기 위한 RabbitMQ에 대해 알아보자 RabbitMQ 특징 RabbitMQ는 얼랭으로 작성됐으며 AMQP 스펙을 구현한 Message Broker이다. RabbitMQ는 얼랭으로 작성됐으며 이에 따라 다음과 같은 특징이 있다. 1. RabbitMQ의 클러스터는 서로 다른 서버 간의 얼랭의 IPC 시스템을 사용해 통신한다. 2. RabbitMQ는 얼랭 IPC를 사용해 메시지, 상태, 설정을 공유하고 각 서버를 동기화한다. 3. 얼랭 IPC.. [LocalStack] AWS를 Mocking HTML 삽입 미리보기할 수 없는 소스 개요 AWS를 쓰게 되면 직접 서버를 준비해서 구성할 필요가 없으므로 여러모로 편리하기도 하지만 편리하다는 이유로 이것저것 막 쓰다 보면 어느샌가 비용이 증가하는 상황을 겪는다. 그러다 보니 AWS를 건드릴 때마다 이건 비용이 얼마나 들까를 자연스레 고민하게 된다. 이에 더해 AWS와 통신을 하는 기능을 개발해야 한다면 개발과정에서 잘 동작하는지 여러 번 체크도 해야되고 테스트 코드가 AWS와 연계된 영역이라면 더 복잡하다. AWS를 Mocking 하는 방법이 뭐가 있을까를 막연하게 생각하던 도중에 글또에서 알게 되신 분에게서 "LocalStack"이라는 AWS를 Mocking 할 수 있는 도구가 있다는 것을 듣게 되었다. 그러하여 "LocalStack"을 조사하.. FOREIGN KEY를 알아보자. Abstract foreign key에 대해 알아보자 Description Foreign key는 다른 테이블의 기본키를 가리키기 위한 필드로 사용하는 키이며, 참조 무결성(Referential Integrity)를 확인하기 위하며 사용된다. 참조 무결성이란 필드를 참조하는 관계에서 부모 쪽의 데이터가 삭제 또는 업데이트를 하는 경우에 발생하는 무결성을 보장하기 위한 것을 말한다. FOREIGN KEY에 관련된 제약사항 FOREIGN KEY를 사용하려면 몇 가지 사항을 지켜야 한다. 아래와 같은 부분들이 존재한다. Foreign key를 가지는 테이블은 Engine이 InnoDB여야 한다. Foreign key를 생성할 때는 참조할 테이블(parent)와 참조하는 테이블(child) 간의 자료형이 동일해.. Redis, Persistence - AOF Persistence? Persistenc는 영속성이라고 하며, 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 특성을 말한다. Redis는 데이터를 in-memory에 저장하기 때문에 전원이 꺼지면 모든 데이터가 삭제한다. 이러한 문제를 해결하기 위해 메모리에 저장되어 있는 Redis의 데이터를 디스크로 백업하는 기능을 지원하며 이러한 기능에는 AOF와 RDB 방식이 존재한다. persistence 관련 설정을 확인하는 명령어는 다음과 같다. redis:6379> info persistence AOF, Append Only File AOF는 입력, 수정, 삭제의 명령을 실행할 때마다 파일에 기록되는 방식을 뜻한다. 기록되는 파일은 텍스트 파일 형식이기 때문에 수정이 가능하다. 파일에 계속 .. Redis, Collections - Sorted Set Sorted Set 하나의 Key에 여러개의 Score와 Value로 구성된다 Score를 기준으로 정렬이 가능하다 value는 score로 sort되며 score가 같으면 value로 sort 된다. score가 같으면 value로 sort됩니다. Sorted Sets에서는 집합이라는 의미에서 value를 member라 부릅니다. Sorted Sets은 주로 정렬이 필요한 곳에 사용한다. ZADD - 데이터 추가 zadd는 Sorted Sets에 데이터를 추가한다. ZADD KEY [score] [value] 순으로 입력 redis:6379> zadd test 10 a (integer) 1 redis:6379> zadd test 20 b (integer) 1 redis:6379> zadd test 15.. Redis, Collections - Hashes Hashes Hashes는 Key 하나에 여러개의 Field와 Value로 구성된다. Key하나에 field와 value를 4,294,967,295까지 저장 가능합니다. Summary HSET - HSET은 데이터를 삽입하며 삽입 된 key-value 쌍의 개수를 반환한다. HGET - HGET은 key를 단건으로 데이터를 조회한다. HMGET - HMGET은 key를 복수건으로 데이터를 조회한다. HGETALL - HGETALL은 Hashes에 들어간 데이터 전부를 반환한다. HKEYS - 입력된 key를 통해 hashes 에 존재하는 key의 목록을 조회한다. HVALS - 입력된 key를 통해 Hashes에 존재하는 value의 목록을 조회한다. HEXISTS - HEXISTS는 데이터가 없으면 0.. Redis, Collection - Sets Sets 중복된 데이터가 존재하지 않는다. 교집합, 합집합 등의 집합 연산을 제공한다. SADD - 데이터 추가 Sets 자료형에 key-value 추가 한다. redis:6379> sadd work:queue:ids 1 (integer) 1 이미 존재하는 데이터를 다시 추가할 때 0을 반환하며 이는 추가되지 않았음을 뜻하고 추가에 성공하면 1을 반환한다. redis:6379> sadd work:queue:ids 0 (integer) 1 redis:6379> sadd work:queue:ids 1 (integer) 1 redis:6379> smembers work:queue:ids 1) "0" 2) "1" redis:6379> sadd work:queue:ids 0 (integer) 0 redis:637.. Redis, Collection - Lists Lists List는 String values가 linked list라 생각하면 되고 Head와 Tail에서 PUSH/POP 연산을 이용하여 데이터를 넣고 뺄 수 있다. 한 key 에 넣을 수 있는 요소의 최대 개수는 4,294,967,295 개이다. Head 와 Tail에 데이터를 넣고 뺴는 건 속도가 빠르지만 중간에 데이터를 삽입하거나 삭제하는 어렵다. LPUSH / RPUSH - 데이터 삽입 LPUSH는 키에 저장된 목록에 좌측(왼쪽)에 지정된 값을 삽입한다. RPUSH는 키에 저장된 목록에 우측(오른쪽)에 지정된 값을 삽입한다. LPUSH와 RPUSH 모두 키가 없다면 빈 목록을 생성한 후에 처리한다. redis:6379> lpush work:queue:ids 101 (integer) 1 redi.. 이전 1 2 3 다음