본문 바로가기

Python5

Redis-Py : ZSet(Sorted Set) 랭킹 구현 활용 ZSET은 Sorted Set으로 세트와 정렬된 목록의 기능을 결합한 Redis의 강력한 데이터 구조이다.  요소를 추가, 제거 또는 업데이트할 수 있으며, 항상 점수 또는 순위로 정렬된 순서를 유지한다. 이러한 특성 덕분에 쉽게 랭킹 시스템 구현이 가능하며 관리가 간편하다. 여기서는 ZSET의 대표적인 함수 몇 가지를 정리하려고 한다. 1. ZINCRBY : 점수 증가 및 감소특정 멤버의 점수를 증가시키거나 감소시키는 데 사용한다. 멤버가 존재하지 않으면 자동으로 추가된다.redis_client.zincrby(key, increment, member)#점수 증가 redis_client.zincrby('ranking', 10, 'player1')#점수 감소redis_client.zincrby('ranki.. 2024. 12. 8.
[Django]데이터베이스 vs Redis: 실시간 접속자 관리 성능 비교와 최적화 문제 채팅 프로젝트를 진행하며 문제가 발생했다. 접속자 API 데이터를 불러오지 못함.기존 접속자는 새로운 사용자가 들어와도 접속자 목록에 반영되지 않음. 실시간 사용자가 많은 경우 채팅방 연결마다 DB 요청이 증가해 병목현상이난 쿼리 처리 속도가 느려질 가능성이 있어 개선할 필요성을 느꼈다.원인기존의 데이터 흐름채팅방 입장 → 사용자 정보 저장  → 웹소켓 접속 → 접속자 리스트 전송 → 데이터 수신  처음엔 데이터베이스에 즉각적으로 저장된 값을 가져오는 방식이 문제라고 생각했으나, 웹소켓 종료 시 사용자 데이터를 제거하는 과정에서 예상치 못한 문제가 있었다. 그리고 React의 안정성을 위한 중복 요청으로 인해 웹소켓이 두 번 연결되며 데이터가 누락되거나 저장되지 않는 경우가 있음을 확인했다.또한, .. 2024. 11. 30.
Django Cache 따닥 중복 요청 방지 문제  게시물이나 댓글을 생성하는 버튼을 화면 전환 전에 여러 번 클릭하면 동일한 요청이 중복으로 발생하는 문제가 나타났다.이로 인해 데이터베이스에는 의도와 상관없이 중복된 값이 저장되었고, 서버로 필요 없는 API 요청이 여러 번 전달되었다.  특히 결제 시스템처럼 중요한 트랜잭션이 처리되는 경우, 동일한 결제가 중복으로 발생할 가능성이 있다. 이는 금전적 손실과 사용자 불만으로 이어질 수 있으며, 심각한 신뢰도 문제 생길 수 있다.  단순히 프런트엔드에서만 처리할 경우, 개발자 도구를 이용한 요청 조작이나 네트워크 지연 등으로 인해 중복 요청이 발생할 수 있다. 이를 방지하기 위해 서버에서도 확실한 검증과 처리가 필요하다. 프런트엔드와 백엔드 모두에서 중복 요청 방지를 구현함으로써 시스템 안정성을 높.. 2024. 11. 18.
Python Celery 분산 작업 자업 큐? Celery가 뭐야? 비동기 작업 처리와 작업 스케줄링을 지원하는 작업 큐(Task Queue)이다. 작업 큐(Task Queue)?  작업을 비동기적으로 처리하기 위해 요청을 대기열에 저장하고, 이를 워커가 순차적으로 처리하는 시스템이다.주로 대규모 작업 분산 처리와 백그라운드 실행을 통해 애플리케이션 성능을 최적화하는 데 사용된다. 1. 비동지 작업 처리 사용자가 요청한 작업을 즉시 처리하지 않고 백그라운드에서 된다.시간이 오래 걸리는 작업을 효율적으로 분리하여 애플리케이션의 응답 속도를 개선한다. 2. 작업 스케줄링특정 작업을 주기적으로 실행하거나 예약된 시간에 실행할 수 있도록 관리한다. 비동기 작업에는 시간이 오래 걸리는 '이메일 발송', '데이터 분석' 등에 사용하며작업 스케줄링은 주기적으로 .. 2024. 11. 17.
[TIL]24.03.19 내일 배움캠프 - CPU, 메모리 CS의 강의를 들으며 강의의 내용을 정리하려고 한다. 이론적인 부분이라 살짝(?) 지루 할 수도 있지만 내용을 이해하고 우리가 배우는 언어가 어떤 식으로 처리되는 원리를 이해한다면 내용이 더욱 재미있게 와닿을 거 같다. CPU CPU는 central processing unit의 약자로 컴퓨터의 뇌를 담당한다. 주로 프로그램 기능을 제어하고 연산하는 기능을 하며 CPU안에서도 다양한 기능이 있다. - ALU : Arithmetic Logic unit의 약자로 사람의 우뇌 역할을 하며 비교, 판단, 연산을 담당한다. - CU : Control Unit의 약자로 사람의 좌뇌 역할을 하며 주로 주기억 장치에 저장 된 내용을 불러와 내용 해독하는 제어부와 컴퓨터를 동작하게 하고 주기억 장치와 입출 장치, 통신 .. 2024. 3. 19.