본문 바로가기

반응형

좋아하는 것_매직IT/9.redis

Spring Boot에서 Redis 캐시 매니저를 사용하여 MySQL 데이터베이스 변경 시 실시간으로 적용하는방법 Redis는 In-Memory 데이터 구조 저장소로서, 메모리 상에 데이터를 저장하므로 데이터베이스 변경이 실시간으로 적용됩니다. 그러나 Redis는 일반적으로 디스크에 데이터를 저장하지 않으므로, Redis 서버를 재시작하거나 큰 메모리 문제가 발생할 경우에는 데이터가 손실될 수 있습니다. Redis의 캐시 매니저는 보통 Redis의 Key-Value 구조를 이용하여 캐시를 관리합니다. 이 때, Redis의 데이터를 변경할 때마다 캐시를 업데이트하고자 한다면 아래 방법대로 한번 해보시면 좋겠네요~ 그럼 설명을 시작해보도록 할께요~ Spring Boot에서 Redis 캐시 매니저를 사용하여 MySQL 데이터베이스 변경 시 실시간으로 적용하고자 한다면, 다음과 같은 코드를 작성할 수 있습니다. 1.Redi.. 더보기
35.Redis, 레디스에서 루아(Lua) 스크립트를 한번 실행해 볼까요? 레디스와 루아(Lua)에 대해서 알아볼께요^^; 레디스 2.6버전에 처음으로 루아 스크립트 엔진이 추가되었음. 다시말해서, Redis 서버에서 루아(Lua) 스크립트를 실행할 수 있게됨. 레디스에서 루아 스크립트를 사용했을때 장점은? 사용자가 마음대로 새로운 명령을 생성할 수 있음. 생성한 명령은 Redis의 일반 명령과 동일한 수준의 트랜잭션과 실행 특징을 보장받을 수 있다고함. 위의 특징은 장점이자 큰 단점이 될 수 도 있음. 즉, 사용자가 작성한 스크립트가 실행되는 동안에는 다른 Redis 명령이 실행되지 못하므로 작성한 스크립트는 반드시 실행 시간에 대한 고려를 포함해야함 레디스에서 수행되는 루아 스크립트의 특징은? Redis에서 루아 스크립트를 실행할 때 스크립트에 대한 인수를 입력할 수 있음... 더보기
34.Redis, 레디스의 AOF(Append Only File)에 대해서 알아보자구요! ^^ AOF(Append Only File) 이란? Redis 에서 데이터의 영구 저장을 위하여 지원하는 두번째 기능. Redis 가 수신하는 모든 쓰기 명령을 aof 파일에 기록하여 데이터를 보관함. 알기쉽게 말하면, MySQL 의 bin 로그와 유사하다고 보면됨. AOF 파일은 수정이나 삭제가 필요 없으며 명령어를 파일의 마지막에 기록할 뿐이므로, 데이터의 정합성 유지에 용이함. Redis 관련 시스템 장애시 마지막 명령의 기록이 완전하지 않을 경우에는 Redis가 제공하는 redis-check-aof 툴을 사용하여 aof파일의 잘못된 부분을 고칠 수 있는 기능 지원. flushall 명령과 같은 잘못 전달된 명령에 의하여 데이터를 완전히 잃어버리는 사태를 방지할 수 있음. 즉, 만약 데이터가 삭제되었으면.. 더보기
33.Redis, 레디스의 스냅샷에 대해서 알아보자구요! ^^ Redis 스냅샷 이란? 데이터의 영구 저장을 위하여 메모리에 저장된 모든 데이터를 디스크로 저장하는 기능이 있는데 이를 스냅샷이라고 함. 그럼, 스냅샷이라 불리우는 이유는 몰까요? 특정 시점의 메모리를 사진을 찍듯이 그대로 디스크에 저장하기 때문이라고 하네요. 간단하게 말해서, 특정 시점의 Redis 백업기능이라고 보면 됨. 스냅샷 결과 dump.rdb 파일 생성. 위의 파일을 통해서 해당 시점의 데이터로 Redis 를 복원할 수 있게됨. 그럼, Redis 스냅샷의 동작은 내부적으로 어떻게 진행될까요? 리눅스의 fork() 함수에 의해서 동작 한다고 하네요. fork() 함수는 보통 자식 프로세스를 생성하는 함수이죠..멀티프로세스 기반의 프로그래밍을 할때 사용됨. 제경험을 잠깐 풀자면, 예전 SKT B.. 더보기
32.Redis, 레디스 설정(redis.conf) 에 대해서 알아보자구요.^^ 레디스 환경설정에 대해서.. 레디스 환경설정에 관한 2가지 방법이 있음. 첫째, 환경설정파일(redis.conf)을 사용하여 Redis 프로세스가 시작할 때 읽혀지는 방법 redis.conf 파일 수정 둘째, Redis 명령을 사용하여, 실시간으로 설정값을 반영하는 방법 config set 명령 사용 환경설정 전체를 보려면 "*" 사용 특징 환경설정 파일 수정 Redis 를 시작할 때 사용하는 redis 명령행의 인자로 지정됨. 그러므로, Redis 에 변경사항을 적용하고자 한다면, Redis 인스턴스의 재기동이 필요함. 실시간 설정 값 반영 동작중인 Redis를 재기동하지 않고, 설정을 즉시 반영하고자 한다면, config set 명령을 사용함. 단, config set 명령을 사용한 환경설정은 Red.. 더보기
31.Redis, 운영 시 메모리 설정은 어떻게 해야 할까요? Redis 의 메모리 설정 Redis 운영 시 비교적 남은 메모리가 넉넉함에도 불구하고, fork 함수의 수행이 실패하는 경우가 발생함. 우선 fork() 함수에 대해서 알아보면, fork() 함수는 부모 프로세스와 동일한 크기의 메모리를 사용하는 프로세스를 생성함. 즉,리눅스에서 부모 프로세스가 사용하는 만큼의 메모리가 남아있지 않으면, fork() 함수가 실패하게 됨. Redis 에서 fork() 함수를 호출하는 경우 스냇샷 AOF 위의 2경우에서 호출한 fork() 함수가 실패한 이후의 Redis 는 모든 쓰기 연산에 대하여 실패 응답을 전송하게됨. 즉, 다시말해서 이론적으로 만약 8GB의 데이터를 가진 Redis 를 운용하기 위해서는 반드시 8GB 이상의 유휴 메모리가 필요함. 그러나, 대부분의 .. 더보기
30.Redis, 운영 시 임계점에 대해서 알아 볼까요? ^^ CPU, Memory, Network에 대해서.. Redis 운영적 관점의 임계점에 대해서.. 스케일 업과 스케일 아웃 스케일업 우수한 성능을 제공하는 부품을 조립하여 강력한 장비 한대를 구축. 만약 성능이 떨어질 경우, 하드웨어를 업그레이드하여 개선하는 방식. but, 비싸고, 성능 좋은 부품을 사용하더라도, 한대의 성능에는 한계가 반드시 있음. 스케일아웃 성능이 떨어질 경우, 논리적으로 서버대수를 추가해서 해결 가능하므로, 한계는 없다. but, 현실적으로는 네트워크 대역폭등등에 의한 한계가 있게됨. 이와 같은 한계점을 우리는 임계점이라고 부름. 임계점 CPU Redis 는 데이터 저장과 조회에 단일 스레드를 사용함. 즉, 멀티코어를 지원해도 오직 단일 코어만을 사용함. 결과적으로, 멀티코어 시스템에서 실행되더라도 하나의 코어만을 사용하기 때문에 단.. 더보기
29.Redis, 샤딩에 대해서 알아볼께요. ^^.. Redis 는 클라이언트 측 샤딩만 지원한다네요..ㅎ 샤딩이란? 다른 용어로 파티셔닝(Partitioning) 이라고 부름. 데이터 샤딩은 2가지 관점에서 유용함. 첫째, 더 많은 데이터를 Redis 에 저장할 수 있음. 복제를 사용 했을 경우 Redis 에 저장 가능한 데이터의 전체 크기는 master 노드의 메모리 크기와 동일 하거나 더 작음. 즉, master 노드의 물리 메모리 크기보다 많은 데이터를 저장하면, 성능이 급격하게 저하될 수 있기때문에, master 노드의 메모리 크기에 의해서 저장 가능한 전체 데이터가 결정됨. 반면, 샤딩을 사용 했을 경우 각 데이터를 특정 조건에 따라서 서버에 분산 저장하는 기법 그러므로, 샤딩은 동일한 개수의 하드웨어를 사용할 때 위에 설명한 복제에 비교해서 상대적으로 더 많은 데이터를 저장할 수 있는 장점. Re.. 더보기

반응형