본문 바로가기

프로그래밍/데이터베이스12

레디스(Redis) TTL 설정하기 레디스의 TTL(Time To Live) 특성 지정된 시간이 지나면 자동으로 키가 삭제된다. 만료 시간을 설정하지 않으면 사용자가 명시적으로 삭제하지 않는 한 영원히 저장된다. 현재 컴퓨터 시간을 기반으로 TTL이 동작하기 때문에 만료 시간을 1000초로 설정해 놓고 현재 컴퓨터 시간을 2000초로 바꾸면 즉시 만료된다. 현재 컴퓨터 시간을 기반으로 TTL이 동작하기에, 레디스 인스턴스가 켜져 있지 않더라도 시간이 카운팅 된다. 명령어로 TTL 설정하기 set [key] [value] 키-값 추가하기 expire [key] [seconds] 만료될 시간 추가하기 expire [key] [seconds from Unix start point] 만료될 시간 추가하기 (Unix timestamp를 기준으로 작.. 2024. 4. 23.
StackExchange.Redis Subscribe()로 구독하기 Subscribe()로 구독하기 해당되는 채널명으로 구독을 설정하면 해당 채널로 오는 메시지를 수신할 수 있다. ISubscriber sub = redis.GetSubscriber(); sub.Subscribe("messages", (channel, message) => { Console.WriteLine((string)message); }); Publish()로 발행하기 해당하는 채널명으로 발행하면 원하는 메세지를 발행할 수 있다. sub.Publish("messages", "hello"); Pub/Sub 메세지 순서 pub/sub API를 사용할 때 동일한 연결의 메시지를 순차적으로 처리해야하는지 아니면 동시에 처리해야 하는지에 대한 결정을 해야 한다. 가능하다면 동시 처리를 사용하는 것이 좋다. 순.. 2023. 12. 27.
Redis 자료구조(Data Structures) Redis 자료구조Strings : Binary-safe 한 기본적인 key-value 구조Lists : 삽입 순서에 따라 정렬된 문자열 요소 컬렉션을 보유Sets : 고유한 멤버 집합을 저장Sorted sets : 부동 소수점 점수로 정렬된 고유한 멤버 집합Hashes : 내부에 sub-key - value를 하나 더 가지는 데이터 구조Bit arrays(bitMaps) : Binary 로직과 상태를 저장하는 압축 데이터 구조HyperLogLogs : 일정한 메모리 크기에서 고유 값을 계산하는 데 사용되는 확률적 데이터 구조Streams : 고속 데이터 스트림(예:메시지 대기열)을 관리하기 위한 데이터 구조Strings값은 최대 512mb단순 증감 연산에 좋음명령어 리스트 .. 2023. 5. 30.
C# StackExchange.Redis로 Redis 사용하기 Redis 테스트에 사용할 C# 프로젝트를 생성해준다. Nuget에서 redis로 검색하고 StackExchange.Redis를 설치한다. 사전 준비 레디스 데이터베이스 이용하기 간단하게 redis 데이터베이스에 접근할 수 있다. IDatabase db = redis.GetDatabase(); GetDatabase() 메서드에서 반환된 오브젝트는 싸게 쓰고 버리는 오브젝트라서 별도로 저장하지 않아도 된다. 개별 서버들에 접근하기 유지보수 목적으로 특정 서버에 접속해야만 하는 상황이 발생할 수 있다. IServer server = redis.GetServer("localhost", 6379); GetServer() 메서드는 EndPoint 또는 IPAddress, Port등의 식별자를 받아서 오브젝트를 반.. 2023. 5. 26.
C# redis에서 Key들을 pattern으로 조회하기 C# 프로젝트에서 redis를 사용하기 위해서 StackExchange.Redis 를 사용해서 구현하였다. 그리고 redis에서 pattern을 이용해서 key값들을 가져오는 함수 Keys()에 대해서 알아보자 함수 원형 // 요약: // Returns all keys matching pattern; the KEYS or SCAN commands will be used based // on the server capabilities; note: to resume an iteration via cursor, cast the // original enumerable or enumerator to IScanningCursor. // // 매개 변수: // database: // The database ID. .. 2023. 5. 25.
트랜잭션 격리 수준(Transaction Isolation Level)에 대해서 트랜잭션(Transaction) 트랜잭션이란 여러 개의 작업을 하나로 묶은 작업의 단위(Unit Of Work)를 말한다. 특정 작업으로 시작해서 묶여 있는 모든 작업들을 다 완료되어야 성공으로 처리한다. 트랜잭션에 속해있는 여러 작업 중에서 하나 라도 실패하면 이 트랜잭션에 속한 모든 작업을 실패한 것으로 처리한다. 포함된 작업이 하나라도 실패하면 트랜잭션도 실패한다. 모든 작업이 성공하면 트랜잭션도 성공한다. 트랜잭션은 성공 또는 실패의 결과만을 갖는다. 데이터베이스 트랜잭션은 ACID라는 특성을 갖는다. A.C.I.D ACID는 트랜잭션을 정의하는 4가지 주요 속성인 원자성, 일관성, 격리성 및 내구성을 말한다. 원자성(Atomicity) 트랜잭션의 각 문(데이터 읽기, 쓰기, 업데이트 또는 삭제).. 2023. 5. 10.