본문 바로가기
반응형

레디스6

Redis 부숴버리기(5) 레디스를 사용한 동시성 문제 해결 - 분산 락 트랜잭션이 동시에 실행됐을 때 발생할 수 있는 문제 관련한 상황을 DB동시성 문제 라고 한다.1. Dirty Read한 트랜잭션이 다른 트랜잭션이 수정 중인 데이터를 읽을 수 있는 문제아직 commit되지 않은 데이터가 읽힘으로서, 추후 rollback 될 가능성이 있는 데이터 read (실제로는 커밋을 했는데, 반영이 안됐다 라는 뜻해결방법 : Read Committed 격리성 : 즉 커밋된 내용만 읽겠다는 뜻 2. Non-Repeatable Read .(UPDATE 문제)mariaDB의 기본 설정은 Repeatable Read 이다. 한 트랜잭션에서 동일한 조회 쿼리를 두 번 이상 실행할때에, 그 중간에 다른 트랜잭션에서 데이터를 수정하여 한 트랜잭션의 결과가 다르게 나타나는 문제 예시) 재고 업데이.. 2024. 5. 16.
Redis 부숴버리기(4) SingleThread, Atomic, 분산 락 이 전까지의 레디스는 Redis를 세션 저장소 및 캐시로 사용하는 전형적인 방법 중 하나이다. 이를 통해 세션 및 캐시를 효율적으로 관리하고 Redis의 고성능을 활용할 수 있다.Redis single thread  레디스는 사용자들이 실행한 명령어들을 이벤트 루프(event loop) 방식으로 처리한다. 즉, 클라이언트가 실행한 명령어들을 Event Queue에 적재하고 싱글 스레드로 하나씩 처리한다. 메모리를 사용하기 때문에 싱글 스레드로 데이터를 빠르게 처리할 수 있다. 하지만 레디스 6.0을 지나면서 레디스는 ThreadedIO 가 추가 되면서  Multi Thread 로 동작한다.레디스는 싱글 스레드 였기 때문에 대규모 데이터 처리에도 Atomic 연산을 보장했다.하지만 멀티스레드를 지원하면 A.. 2024. 5. 15.
Redis 부숴버리기(3) 캐싱 레디스의 기능중에 캐싱 기능이 있었는데 캐싱기능을 사용하면 레디스에 저장하고 데이터가 레디스에 담겨있으면 꺼내오는식으로 이루어진다.  캐시란 데이터를 미리 복사해 놓은 임시 저장소를 말한다. 이러한 캐시 기능을 사용하면 성능향상에 큰 이점을 주고 db에 접근하는것을 최대한 막아준다. 캐시를 적용해 보도록 하겠다. 이번에는 Redis 부숴버리기(2) 에 설정과는 좀 다르고 (1)과 설정이 비슷하다.  configuration @Configuration@EnableRedisRepositories@Slf4j@EnableCachingpublic class RedisConfig{ @Value("${spring.redis.host}") private String redisHost; @Value("$.. 2024. 5. 13.
Redis 부숴버리기(2) 다중 Database 사용 레디스 안에는 0번부터 15까지 16개의 database instance가 있다. 아무 설정없이 이 전 처럼 활용하면 기본적으로 0번 database에 저장하게 된다. 하지만 키 값이 여러개가 되면 동일한 DB에 저장하면 관리하기 힘들게 된다. 그래서 여러개의 database를 사용하는 것은 좋다. 이 전장에서LettuceConnectionFactory이것에 대해 알아보려고 했는데 지금 알아보려고 한다. LettuceConnectionFactory는 Redis 서버와의 연결을 설정하고 관리하는 Spring의 연결 팩토리입니다. 이 클래스를 사용하여 다양한 작업을 수행할 수 있습니다. 아래는 LettuceConnectionFactory를 사용하여 수행할 수 있는 주요 작업들입니다: 그 중에RedisStan.. 2024. 5. 13.
Redis 부숴버리기 이번 harbor 프로젝트를 진행하면서 사용한 기술들의 대해서 모두 다 정리를 해보려고 한다.https://github.com/beyond-sw-camp/be03-fin-4team-HarboR GitHub - beyond-sw-camp/be03-fin-4team-HarboR: 🥴 송보석 🫠 이원태 😮 이창선 🤪 손정민🥴 송보석 🫠 이원태 😮 이창선 🤪 손정민. Contribute to beyond-sw-camp/be03-fin-4team-HarboR development by creating an account on GitHub.github.com 자세한 내용은 여기서 확인할 수 있다.  Redis는 Remote(원격)에 위치하고 프로세스로 존재하는 In-Memory 기반의 Dictiona.. 2024. 5. 12.
redis 사용 일간, 주간 월간 조회수 구현 프로젝트 도중 일간, 조회수, 주간 조회수, 월간 조회수를 를 구현하고자 했습니다. 게시글을 누를때마다 post에 칼럼인 view카운트를 늘려주고 Views 테이블에 postid와 userid,게시글 클릭 한 시간 을 담으려고 했었는데 그렇게 되면 어뷰징과, 게시글 누를때마다 실시간으로 Insert 문이 발생돼서 효율적이지 않다고 생각돼 레디스에 Useremail 이 key이고 value가 유저가 그 날 하루에 조회한 postid가 담기게 했습니다 예를들어 song@naver.com으로 로그인해서 1,3,5,7,9,10 번을 조회하면 레디스에는 song@naver.com : 1_3_5_7_9_10 으로 구분자 _ 를 기준으로 해서 들어가게 했습니다. 24시가되면 스케쥴러가 돌면서 Views테이블로 각 게.. 2024. 2. 25.
반응형