목록SQL&NoSQL (9)
개발 기록
우리가 전화부번호부에서 '홍길동' 을 찾을려면 첫장부터 다 뒤져봐야 할것이다. 인덱스를 사용하면 가나다순 이나, 이름으로 접근할 수 있으므 이런 수고로움을 덜어준다.■1. 인덱스 (Index) 개념 《Index 사전적 의미》명사적 의미: 문서나 책에서 주제, 단어, 용어 등을 정리하고 색깔, 알파벳, 숫자 등을 이용하여 순서대로 나열한 목록동사적 의미: '정보를 정리하여 색깔, 알파벳, 숫자 등을 이용하여 순서대로 나열하다'를 의미 => 색인화(indexing)《 데이터베이스에서 사용하는 Index 의미 》 테이블의 하나 이상의 열(칼럼)에 대한 정렬된 데이터 구조로 검색 속도를 향상시키기 위해 사용된다. 즉 원본 테이블의 데이터를 기반으로 생성되는 추가적인 데이터 구조다. (1) 특징 ① 정렬된 저장..
■1. Zset (SortedSets) 순서가 보장되는 고유한 문자열들의 컬렉션으로 이 고유한 문자열 하나를 멤버(member)라고 부르며, 각 멤버에 연관된 점수(score)를 기준으로 멤버들이 정렬된다. 1. 특징 ☞ score 는 부동 소수점 숫자 형식을 사용한다. ☞ 개별 멤버들이 중복되지 않고 고유하며 각 멤버들이 score와 1:1로 연관된다 ☞ 각 멤버들의 점수를 기준으로 1차적으로 정렬되고, 점수가 같을 때에는 멤버에 따라 알파벳 순으로 정렬된다. ☞ 정렬된 상태이기에 빠르게 최소/최대값을 구할수있다. 2. 활용 사례㉮ 순위 계산, 리더보드 구현등에 활용 : ex. 가장 높은 점수를 순서대로 나열한 목록 유지 ㉯ 리율 제한 장치(Rate Limiter) : sorted s..
■0. 기본 차이점 정리 RedisManagerRedisTemplateRedisRepository ☞ Spring Cache 추상화 ☞ return value chching ☞ 데이터 타입별로 방식 다름 ☞ CRUD Repository 상속☞ @RedisHash Entity 저장@Cacheable(name = "item")redisTemplate.opsForValue().set(key, value)redisRepository.save(entiyu)조회@Cacheable(name = "item")redisTemplate.opsForValue().get(key)redisRepository.findById(key)삭제@CacheEvictredisTemplate.opsForValue().delete(key)..
■1. class RedisTemplate Redis 데이터 접근을 도와주는 helper class 이다.K : redis key (usually a String) V : redis value- Lettuce는 기본적으로 직렬화 및 역직렬화를 관리하지만 직접 구성할 수 있다. - 스레드로부터 안전 하므로 멀티 스레드 환경 에서 잘 작동한다.- redis 는 key , value 형태로 저장한다. (1) Redis 데이터 타입 (2) RedisTemplate date type method메서드명반환타입Redis 자료구조설명opsForValue()ValueOperationsString문자열에 대한 작업opsForStreamStreamOperationStream스트림 값에 대한 작opsForList(..
개발환경 java 17spring version 6.0.11 (4.x-5.x)spring boot version 3.1.3 (1.x-2.x) ■1. 설정 (1) Redis 의존성 추가 spring-boot-starter-data-redis: Spring Data Redis 및 Lettuce 클라이언트와 함께 Redis 키-값 데이터 저장소를 사용하기 위한 Starter.spring-boot-starter-cache : Spring Framework의 캐싱 지원을 위한 스타터로, 캐싱 공급자와 작업할 때 사용하는 주석을 제공. (2) Application.ymldefault => host: localhost, port: 6379 (3) RedisConfig.java 1) annotation1. @E..
1. Redis 소스 파일 다운로드1. 코드 소스 다운로드 후 압축해제$ wget https://github.com/redis/redis/archive/7.0.10.tar.gz$ tar -xzvf redis-stable.tar.gz 2. 결과 2. Redis 컴파일1. make 명령어를 이용한 컴파일 * make 는 소스 파일들을 컴파일하여 redis-server, redis-cli 등의 프로그램을 빌드한다.$ cd redis-stable$ make 2. 결과 : 컴파일이 성공하면 디렉터리에서 src다음을 포함하여 여러 Redis 관련 binary 를 찾을 수 있다.redis-server : Redis 서버 자체redis-cli는 Redis와 통신하기 위한 명령줄 인터페이스 유틸리티입니다. ※ ※..
■1. RedisRepository (1) Repository (2) Redis 에 저장할 자료구조 Class 생성 - Redis는 byte code로 데이터를 담기 때문에 Serializable을 구현해줘야 한다.- Domain Object를 redis hash 자료구조로 변환하여 저장 1. @RedisHash - value :데이터에 대한 key가 생성될 때 prefix 로 지정 - Hash 의 key는 value+@Id로 형성된다.2. @Id : null로 저장될 경우 랜덤 값으로 설정된다.3. @Indexed : keyspace:인덱스를 적용한 필드:해당 필드의 값 4. @TimeToLive : TTL을 적용 => TimeToLive에 적용되는 시간은 '초' 단위이며, default ..
■1. Redis Sentinel 란? Redis 가 제공하는 고가용성 솔루션이다. Redis 클러스터에 장애가 발생하는 경우 Sentinel은 장애 지점을 자동으로 감지하고 사람의 개입 없이 클러스터를 다시 안정 모드로 되돌린다. 즉, Redis Sentinel은 사람의 개입 없이 Redis 배포에 저항할 수 있는 시스템. ▶ sentinel , master, replica 로 구성 master :데이터 읽기와 쓰기가 모두 가능replica : 기본적으로 데이터를 읽을 수 있고, 인식할 수 없다. Master로부터의 데이터를 수락sentinel : 모니터링, 알림, 자동 장애 조치, 구성 공급 ▶ 레디스 센티넬은 레디스 서버들(마스터와 레플리카)을 관리하며, 마스터가 서비스 할 수 없는 상태면 ..