마인드 맵 갤러리 레디스
Redis에 대한 마인드맵입니다. 8. Redis 지속성, 7. Redis 트랜잭션, 6. 게시 및 구독, 2. 시작, 1. Redis 7.0 설치, 5. Redis 구성 파일, 4. Redis 데이터 유형, 3. Redis 키(key) 관련 명령.
2024-03-28 15:31:48에 편집됨레디스
1. Redis7.0 설치
1. 다운로드하여 opt 디렉토리에 넣으십시오.
https://redis.io/download/
2. opt 디렉토리에 압축을 푼다.
tar -zxvf redis-7.0.0.tar.gz
감압 후
3. redis-7.0.11 디렉토리를 입력하세요.
gcc 설치
냠 gcc-c를 설치하세요
만들다
설치하다
스크린샷
4. 기본 설치 디렉터리
/usr/로컬/빈
Linux의 /usr/local은 Windows 시스템의 C:\Program Files와 유사합니다.
확인하다
redis-benchmark: 성능 테스트 도구입니다. 서비스가 시작된 후 이 명령을 실행하여 노트북 성능을 확인하세요.
redis-check-aof: 문제가 있는 AOF 파일 복구
redis-check-dump: 문제가 있는 dump.rdb 파일 수정
redis-cli: 클라이언트, 작업 입구
redis-sentinel: redis 클러스터에서 사용됩니다.
redis-server: Redis 서버 시작 명령
5. redis.conf 구성 파일 수정
2. 시작
Redis 기본 설치 디렉터리를 입력하세요.
redis-server: Redis 서버 시작 명령
redis-cli: 클라이언트, 작업 입구
비밀번호가 설정된 경우: auth 비밀번호
백그라운드에서 시작
Redis.conf 백업
아니오를 예에 데몬화하다
[root@ecs-353138 redis-7.0.0]# redis-server ./redis.conf
Redis를 시작하려면 구성 파일을 지정해야 합니다. 실제로 Redis는 설치 디렉터리에 있는 redis.conf가 아닌 내부 구성 파일을 읽습니다.
폐쇄
단일 인스턴스 종료: redis-cli -a 비밀번호 종료
다중 인스턴스 종료: 포트 종료 지정: redis-cli -p 6379 shutdown
Redis 제거
1. Redis 서비스 중지
2. /usr/local/lib 디렉터리에서 redis 관련 파일을 삭제합니다.
3. Redis 키 관련 명령어
열쇠*
현재 라이브러리의 모든 키 보기
키가 존재합니다
특정 키가 존재하는지 확인
키를 입력하세요
키가 어떤 유형인지 확인하세요.
델 키
지정된 키 데이터 삭제
키 연결 해제
값을 기준으로 비차단 삭제 선택
Redis UNLINK 명령은 지정된 키를 삭제하는 데 사용되는 DEL 명령과 매우 유사합니다. DEL과 마찬가지로 키가 존재하지 않으면 무시됩니다. 그러나 이 명령은 명령 외부의 스레드에서 실제 메모리 회수를 수행하므로 차단되지 않지만 DEL은 차단됩니다. 이것이 명령 이름의 유래입니다. UNLINK 명령은 단순히 키 공간에서 키 연결을 끊습니다. 실제 삭제는 나중에 비동기적으로 발생합니다.
만료 키 10
10초, 해당 키의 만료 시간 설정
TTL 키
만료까지 남은 시간(초)을 확인하세요. -1은 만료되지 않음을 의미하고 -2는 만료되었음을 의미합니다.
0을 선택하세요
데이터베이스 전환
사이즈를 줄이다
현재 데이터베이스의 키 수 보기
플러시DB
현재 라이브러리 지우기
변기
모든 라이브러리 종료
4. Redis 데이터 유형
다섯 가지 기본 데이터 유형
끈
소개
String은 Redis의 가장 기본적인 유형으로 하나의 키가 하나의 값에 해당합니다. String 유형은 바이너리 안전합니다. 이는 Redis 문자열에 모든 데이터가 포함될 수 있음을 의미합니다. 예를 들어 jpg 이미지 또는 직렬화된 개체입니다. Redis의 문자열 값은 최대 512M일 수 있습니다.
일반적인 명령
키 값 NX 설정
NX: 데이터베이스에 키가 존재하지 않는 경우 데이터베이스에 키-값을 추가할 수 있습니다. XX: 데이터베이스에 키가 존재하는 경우 키-값을 데이터베이스에 추가할 수 있으며 이는 NX 매개변수와 상호 배타적입니다. EX: 키 시간 초과 초 PX: 밀리초 단위의 키 시간 초과, EX와 상호 배타적
키-값 쌍 추가
열쇠를 얻으세요
해당 키 값 쿼리
키 값 추가
주어진 값을 원래 값의 끝에 추가합니다.
strlen 키
값의 길이를 가져옵니다.
setnx 키 값
키가 존재하지 않는 경우에만 키 값을 설정하십시오.
증분 키
키에 저장된 숫자값을 1씩 증가시킵니다.
감소 키
키에 저장된 숫자 값을 1씩 감소시킵니다.
숫자 값에만 작동할 수 있습니다. 비어 있으면 새 값은 1 또는 -1이 됩니다.
incrby/decrby 키 단계 크기
키에 저장된 숫자 값을 늘리거나 줄입니다. 사용자 정의 단계 크기
mset 키1 값1 키2 값2
동시에 하나 이상의 키-값 쌍 설정
mget 키1 키2
동시에 하나 이상의 값을 가져옵니다.
msetnx 키1 값1 키2 값2
원자성, 하나가 실패하면 모두 실패합니다.
주어진 키가 모두 존재하지 않는 경우에만 하나 이상의 키-값 쌍을 동시에 설정하십시오.
getrange 키 시작 위치 끝 위치
Java, 프론트 패키지, 백 패키지의 하위 문자열과 유사한 값 범위를 가져옵니다.
설정 범위 키 시작 위치 값
키에 저장된 문자열 값을 시작 위치부터 값으로 덮어씁니다(인덱스는 0부터 시작).
setex 키 만료 시간 값
키 값을 설정할 때 만료 시간을 초 단위로 설정합니다.
getset 키 값
이전 값을 새 것으로 교체하고 새 값을 설정하는 동시에 이전 값을 가져옵니다.
데이터 구조
문자열의 데이터 구조는 SDS(Simple Dynamic String)입니다.
목록
소개
삽입 순서로 정렬된 단일 키 다중 값을 사용하면 목록의 헤드(왼쪽) 또는 테일(오른쪽)에 요소를 추가할 수 있습니다.
일반적인 명령
lpush / rpush 키 값1 값2
왼쪽/오른쪽에서 하나 이상의 값 삽입
엘팝/르팝
왼쪽/오른쪽에서 값을 내뱉습니다. 값은 키에 있고 값은 키에 있습니다.
rpoplpush 키1 키2
key1 목록의 오른쪽에 있는 값을 뱉어내고 이를 key2 목록의 왼쪽에 삽입합니다.
lrange 키 시작 중지
lrange age 0 -1, 모든 것을 얻는다는 의미
인덱스 첨자에 따라 요소 가져오기(왼쪽에서 오른쪽으로)
lindex 키 인덱스
인덱스 첨자에 따라 요소 가져오기(왼쪽에서 오른쪽으로)
렌 키
목록 길이 가져오기
값 newvalue 앞에 linsert 키
value 앞에 newvalue 값을 삽입합니다.
lrem 키 n 값
n개의 값을 왼쪽에서(왼쪽에서 오른쪽으로) 삭제
lset 키 인덱스 값
목록 키에서 아래 첨자가 인덱스인 값을 값으로 바꿉니다.
데이터 구조
① List의 데이터 구조는 QuickList입니다. ② 먼저, 목록 요소가 작을 경우 연속적인 메모리 저장소를 사용하게 됩니다. 이 구조는 압축된 목록인 ziplist입니다. ③ 데이터의 양이 상대적으로 많을 경우 퀵리스트로 변경됩니다.
세트
소개
자동 중복 제거 및 설정은 문자열 유형의 정렬되지 않은 모음입니다. 맨 아래 계층은 추가, 삭제 및 쿼리의 복잡도가 O(1)입니다.
일반적인 명령
sadd 키 값1 값2
컬렉션 키에 하나 이상의 구성원 요소를 추가하면 기존 구성원 요소가 무시됩니다.
회원 키
세트에서 모든 값을 가져옵니다.
sismember 키 값
설정된 키에 값이 포함되어 있는지 확인합니다. 1이 있고 0이 없습니다.
스카드 키
컬렉션의 요소 수를 반환합니다.
srem 연령 값1 값2
컬렉션에서 요소 삭제
스팝 키
컬렉션에서 임의의 값을 뱉어냅니다.
srandmember 키 n
이 세트에서 무작위로 n개의 값을 가져옵니다. 컬렉션에서 제거되지 않습니다.
소스 대상 값 이동
컬렉션의 값을 한 컬렉션에서 다른 컬렉션으로 이동
소결 키1 키2
두 컬렉션의 교차 요소를 반환합니다.
수니온 키1 키2
두 컬렉션의 통합 요소를 반환합니다.
sdiff 키1 키2
두 세트의 차이 요소를 반환합니다(key1의 요소, key2의 요소 제외)
데이터 구조
① Set 데이터 구조는 dict 사전이며, 사전은 해시 테이블을 이용하여 구현됩니다. ② Java에서 HashSet의 내부 구현은 HashMap을 사용하지만 모든 값은 동일한 객체를 가리킵니다. Redis의 집합 구조도 마찬가지이며 내부적으로 해시 구조를 사용하며 모든 값은 동일한 내부 값을 가리킵니다.
해시시
소개
Redis 해시는 키-값 쌍의 모음으로, 문자열 유형 필드와 값의 매핑 테이블로, 특히 객체를 저장하는 데 적합합니다.
일반적인 명령
hset 키 필드 값
키 컬렉션의 필드 키에 값 할당
hget 키 필드
key1 컬렉션 필드에서 값 가져오기
hmset 키1 필드1 값1 필드2 값2
해시값을 일괄적으로 설정
hexists 키 필드
해당 필드 필드가 해시 테이블 키에 존재하는지 확인
hkeys 키
이 해시 세트의 모든 필드 나열
hvals 키
해시 세트의 모든 값을 나열합니다.
Hincrby 키 필드 증분
해시 테이블 키의 필드 값에 증분 1 -1을 추가합니다.
hsetnx 키 필드 값
필드 필드가 존재하지 않는 경우에만 해시 테이블 키의 필드 필드 값을 value로 설정합니다.
데이터 구조
해시 유형에는 ziplist(압축 목록)와 hashtable(해시 테이블)이라는 두 가지 데이터 구조가 있습니다. 필드 값 길이가 짧고 개수가 작은 경우 ziplist를 사용하고 그렇지 않으면 해시 테이블을 사용합니다.
zset (주문 세트)
소개
zset은 반복되는 요소가 없는 문자열 모음입니다. 차이점은 순서가 지정된 집합의 각 구성원이 점수와 연결되어 있다는 점입니다. 가장 높은 점수로 설정됩니다. 세트의 구성원은 고유하지만 점수는 반복될 수 있습니다.
일반적인 명령
zadd 키 점수1 값1 점수2 값2
하나 이상의 멤버 요소와 해당 점수 값을 정렬된 세트 키에 추가합니다.
zrange 키 시작 중지 [WITHSCORES]
첨자가 시작과 중지 사이에 있는 정렬된 집합 키의 요소를 반환합니다. WITHSCORES를 사용하면 점수와 값을 결과 집합에 반환할 수 있습니다.
zrangebyscore 키 최소 최대
점수 값이 min과 max 사이(min 또는 max와 같음 포함)인 정렬된 집합 키의 모든 멤버를 반환합니다. 정렬된 세트의 구성원은 점수 값이 증가하는 순서(작은 것부터 큰 것까지)로 배열됩니다.
zrevrangebyscore 키 최대 최소
가장 큰 것부터 가장 작은 것 순으로 정렬하도록 변경
아연rby 키 증분 값
요소 점수에 증분 추가
zrem 키 값
컬렉션에서 지정된 값을 가진 요소를 삭제합니다.
zcount 키 최소 최대
집합의 개수, 분수 구간의 요소 수 계산
zrank 키 값
0부터 시작하여 집합에 있는 값의 순위를 반환합니다.
데이터 구조
해시, 해시의 기능은 요소 값과 가중치 점수를 연관시켜 요소 값의 고유성을 보장하는 것입니다. 해당 점수 값은 요소 값을 통해 찾을 수 있습니다.
점프 목록 점프 목록의 목적은 요소 값을 정렬하고 점수 범위에 따라 요소 목록을 얻는 것입니다.
세 가지 고급 데이터 유형
비트맵
비트맵 자체는 데이터 유형이 아니며 실제로는 문자열(키-값)이지만 문자열의 비트에 대해 작동할 수 있습니다.
하이퍼로그로그
Redis HyperLogLog는 카디널리티 통계에 사용되는 알고리즘입니다. HyperLogLog의 장점은 입력 요소의 수나 양이 매우 클 때 카디널리티를 계산하는 데 필요한 공간이 항상 고정되어 매우 작다는 것입니다.
지리공간
GEO: 지리정보(Geographic Information)의 약어. 이 유형은 지도상의 위도와 경도인 요소의 2차원 좌표입니다. 이러한 유형을 기반으로 redis는 경도 및 위도 설정, 쿼리, 범위 쿼리, 거리 쿼리, 경도 및 위도 해시 등과 같은 일반적인 작업을 제공합니다.
5. Redis 구성 파일
네트워크 관련 구성
묶다
기본적으로 바인딩=127.0.0.1은 이 시스템의 액세스 요청만 수락할 수 있습니다.
보호 모드
로컬 액세스 보호 모드를 아니요로 설정
포트
포트, 기본값 6379
시간 초과
유휴 클라이언트를 종료하는 데 몇 초가 걸리나요? 0은 이 기능을 끄는 것을 의미합니다. 즉 절대 닫지 마세요
TCP-keepalive
단위는 초입니다. 0으로 설정하면 Keepalive 감지가 수행되지 않습니다. 60으로 설정하는 것이 좋습니다.
n초마다 한 번씩 클라이언트 액세스에 대한 하트비트 감지
일반일반
악마화하다
(데몬) 백그라운드 프로세스인지 여부를 yes로 설정합니다.
pid파일
pid 파일이 저장되는 위치입니다. 각 인스턴스는 다른 pid 파일을 생성합니다.
로그 수준
프로덕션 환경의 경우 알림 또는 경고를 선택합니다.
로깅 수준을 지정합니다. Redis는 디버그, 상세 정보, 알림의 총 4가지 수준을 지원합니다. 기본값은 알림입니다.
로그 파일
로그 파일 이름
데이터베이스 16
라이브러리 수를 설정합니다. 기본값은 16입니다. 기본 데이터베이스는 0입니다. SELECT <dbid> 명령을 사용하여 연결에서 데이터베이스 ID를 지정할 수 있습니다.
보안보안
암호를 설정하세요
LIMITS한도
맥클라이언트
Redis가 동시에 연결할 수 있는 클라이언트 수 설정
기본값은 10000 클라이언트입니다.
이 제한에 도달하면 redis는 새로운 연결 요청을 거부하고 이러한 연결 요청자에게 "최대 클라이언트 수에 도달했습니다"로 응답합니다.
최대 메모리
최대 메모리 정책
최대 메모리 샘플
6. 게시 및 구독
게시와 구독이 무엇인가요?
Redis 게시 및 구독(pub/sub)은 메시지 통신 모델입니다. 발신자(pub)는 메시지를 보내고 구독자(sub)는 메시지를 받습니다.
클라이언트가 채널을 구독합니다.
이 채널에 메시지가 게시되면 해당 메시지는 구독한 클라이언트에게 전송됩니다.
명령 구현
채널1을 구독하려면 클라이언트를 엽니다.
채널1 구독
다른 클라이언트를 열고 hello 메시지를 채널1에 게시합니다.
채널 1 게시 안녕하세요
반환된 2는 구독 수입니다.
7. Redis 트랜잭션
1. 정의
Redis 트랜잭션은 단일 격리된 작업입니다. 트랜잭션의 모든 명령은 직렬화되어 순서대로 실행됩니다. 트랜잭션이 실행되는 동안 다른 클라이언트가 보낸 명령 요청으로 인해 중단되지 않습니다.
Redis 트랜잭션의 주요 기능은 여러 명령을 직렬로 연결하여 다른 명령이 대기열에서 점프하는 것을 방지하는 것입니다.
2. 멀티, 실행, 폐기
① Multi 명령 입력부터 입력된 명령은 순서대로 명령 대기열에 입력되지만 Exec이 입력될 때까지 실행되지 않으며 Redis는 이전 명령 대기열에 있는 명령을 순서대로 실행합니다. ② 팀 결성 진행 중, 팀 결성을 폐기하여 포기할 수 있습니다.
팀 구성 성공, 제출 성공
팀 구성 단계에서 오류가 보고되어 제출에 실패했습니다.
팀 구성이 성공했고, 제출 성공 여부도 확인됐다.
3. 거래오류 처리
대기열의 명령이 오류를 보고하면 실행 중에 모든 대기열이 취소됩니다.
실행 단계에서 명령에 대해 오류가 보고되면 오류를 보고한 명령만 실행되지 않고 롤백 없이 다른 명령이 실행됩니다.
4. Redis 트랜잭션의 세 가지 특징
별도의 검역 운영
트랜잭션의 모든 명령은 직렬화되어 순차적으로 실행됩니다. 트랜잭션이 실행되는 동안 다른 클라이언트가 보낸 명령 요청으로 인해 중단되지 않습니다.
격리 수준 개념 없음
대기열에 있는 명령은 제출될 때까지 실제로 실행되지 않습니다. 트랜잭션이 제출되기 전에는 실제로 명령이 실행되지 않기 때문입니다.
원자성을 보장하지 않음
트랜잭션의 명령이 실행되지 않으면 롤백 없이 후속 명령이 계속 실행됩니다.
8. Redis 지속성
RDB(레디스 데이터베이스)
그것은 무엇입니까?
지정된 시간 간격 내에 메모리에 있는 데이터 세트의 스냅샷을 디스크에 기록합니다. 이를 전문 용어로는 스냅샷이라고도 합니다. 복원되면 스냅샷 파일을 메모리로 직접 읽어옵니다.
백업 수행 방법
Redis는 지속성을 위해 별도로 하위 프로세스를 생성(포크)합니다. 먼저 데이터를 임시 파일에 기록합니다. 지속성 프로세스가 완료된 후 이 임시 파일은 마지막 지속 파일을 대체하는 데 사용됩니다. 전체 프로세스 동안 메인 프로세스는 IO 작업을 수행하지 않으므로 매우 높은 성능을 보장합니다. 대규모 데이터 복구가 필요하고 데이터 복구의 무결성이 그다지 중요하지 않은 경우 RDB 방법이 AOF 방법보다 효율적입니다. .고효율. RDB의 단점은 마지막 지속성 이후의 데이터가 손실될 수 있다는 것입니다.
포크
Fork의 기능은 현재 프로세스와 동일한 프로세스를 복사하는 것입니다. 새 프로세스의 모든 데이터(변수, 환경 변수, 프로그램 카운터 등)는 원래 프로세스와 동일한 값을 가지지만 완전히 새로운 프로세스이며 원래 프로세스의 하위 프로세스 역할을 합니다.
Linux 프로그램에서 fork()는 상위 프로세스와 정확히 동일한 하위 프로세스를 생성하지만 하위 프로세스는 효율성을 위해 종종 exec 시스템 호출을 수행합니다. Linux는 "기록 중 복사 기술"을 도입했습니다.
일반적으로 상위 프로세스와 하위 프로세스는 동일한 물리적 메모리 세그먼트를 공유합니다. 프로세스 공간의 각 세그먼트 내용이 변경되는 경우에만 상위 프로세스의 내용이 하위 프로세스에 복사됩니다.
dump.rdb 파일
redis.conf에서 파일 이름을 구성합니다. 기본값은 dump.rdb입니다.
이점
대규모 데이터 복구에 적합
데이터 무결성 및 일관성에 대한 요구 사항이 높지 않은 경우 사용하는 것이 더 적합합니다.
디스크 공간 절약
빠른 복구
불충분하다
백업 주기 동안 일정한 간격으로 백업이 이루어지므로 Redis가 예기치 않게 다운되면 마지막 스냅샷 이후의 모든 수정 사항은 손실됩니다.
요약하다
AOF(파일만 추가)
그것은 무엇입니까?
각 쓰기 작업을 로그 형식으로 기록하고(증분 저장), Redis에서 실행한 모든 쓰기 명령을 기록합니다(읽기 작업은 기록되지 않음). 파일만 추가하고 파일을 다시 쓸 수는 없습니다. Redis는 처음에 읽습니다. 이 파일은 데이터를 재구성합니다. 즉, redis가 재시작되면 로그 파일의 내용을 기준으로 앞에서 뒤로 쓰기 명령이 실행되어 데이터 복구 작업이 완료됩니다.
AOF 지속성 프로세스
AOF는 기본적으로 활성화되어 있지 않습니다.
AOF와 RDB가 동시에 활성화됩니다. Redis는 누구의 말을 듣나요?
AOF와 RDB는 동시에 활성화되며 시스템은 기본적으로 AOF 데이터를 가져옵니다(데이터는 손실되지 않음)
이점
백업 메커니즘이 더욱 강력해지고 데이터 손실 가능성이 낮아집니다.
불충분하다
RDB보다 더 많은 디스크 공간을 차지합니다.
백업 복원 속도가 느려집니다.
요약하다