본문 바로가기

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

레디스(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.
도커(Docker)로 레디스(redis) 실행하기 항상 동일한 환경으로 레디스 실행하기 메모리에 상주하는 레디스(Redis)는 인메모리 방식으로 다른 RDS와 다르게 엄청난 속도를 보장한다. 이런 레디스를 항상 동일한 환경으로 배포해보자. 도커를 이용하면 가능하다. 도커 공식 이미지 가져오기 파워쉘에서 아래 커맨드 입력시 공식 이미지를 pull 해온다. docker pull redis redis - Official Image | Docker Hub Quick reference Supported tags and respective Dockerfile links 7.2.4, 7.2, 7, latest, 7.2.4-bookworm, 7.2-bookworm, 7-bookworm, bookworm 7.2.4-alpine, 7.2-alpine, 7-alpine, .. 2024. 3. 25.
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.