이 기사에서는 Redis 데이터 유형이 무엇인지 설명합니다. Redis의 각 데이터 유형에 대한 요약에는 특정 참조 값이 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
redis는 ANSI C 언어로 작성된 오픈 소스 로그 유형, 키-값 데이터베이스이며, 네트워크를 지원하고, 메모리 기반 및 지속성이 가능하며, 여러 언어로 API를 제공합니다.
데이터베이스, 캐시 및 메시지 대기열 브로커로 사용할 수 있는 인메모리 데이터 구조 서버입니다.
데이터 랜딩 기능을 제공하면서 메모리 내 모든 데이터를 통해 고속 액세스를 보장합니다. 이것이 Redis의 주요 적용 시나리오입니다.
reids에는 복제, Lua 스크립트, LRU 회수, 트랜잭션 및 다양한 수준의 디스크 지속성 기능이 내장되어 있으며 Redis Sentinel을 통해 고가용성을 제공하고 Redis 클러스터를 통해 자동 파티셔닝을 제공합니다.
redis는 문자열, 해시 테이블, 목록, 집합, 순서 집합, 비트맵, 하이퍼로그 로그 및 기타 데이터 유형을 지원합니다.
가장 일반적으로 사용되는 Redis 데이터 유형: Stirng, hash, list, set, sorted set, pub/sub, transaction.
문자열 유형은 간단한 키-값 유형입니다. 값은 문자열뿐만 아니라 숫자도 됩니다.
일반적으로 사용되는 명령: set, get, decr, incr, mget 등
memcached와 동일한 get, set, incr, decr 및 기타 작업을 제공하는 것 외에도 redis는 다음 작업도 제공합니다.
(1) 문자열 길이 가져오기
(2) 문자열에 추가 Content;
(3) 문자열의 특정 내용을 설정하고 가져옵니다.
(5) 일련의 문자열 내용을 일괄적으로 설정합니다.
일반적으로 사용되는 명령: hget, hset, hgetall 등
응용 시나리오: 사용자의 닉네임, 나이, 성별, 포인트 등과 같은 일부 구조화된 데이터를 저장하고 사용자 정보 객체 데이터를 저장합니다.
Hash의 적용 시나리오를 설명하기 위해 간단한 예를 들어 보겠습니다. 예를 들어 다음 정보를 포함하는 사용자 정보 개체 데이터를 저장합니다.
(1) 사용자 ID는 검색 키입니다. 2) 저장 값에는 이름, 나이, 생일 및 기타 정보가 포함됩니다.
(1) 키는 사용자 ID이고 값은 맵입니다.
(2) 이 맵의 키는 멤버의 속성 이름이고 값은 속성 값입니다.
(1) Redis는 모든 속성 데이터를 직접 얻을 수 있는 인터페이스(hgetall)를 제공하지만 내부 맵에 멤버가 많은 경우 전체 맵을 순회해야 합니다.
(2) Redis의 단일 스레드 모델로 인해 이 순회 작업은 시간이 많이 걸릴 수 있으며 다른 클라이언트 요청에 전혀 응답하지 않을 수 있다는 점에 유의해야 합니다.
목록 유형
( 2) 다른 응용 프로그램이 수행 중입니다. 연결된 목록에서 요소를 제거하는 rpop 작업. 우리는 이러한 프로그램을 "소비자"라고 부릅니다.
(3) 소비자가 메시지를 소비하는 동안 목록에 보류 중인 메시지가 있는지 확인하려면 rpop을 계속 호출해야 합니다. 호출할 때마다 링크가 시작되어 불필요한 낭비가 발생합니다.
Set type
그리고 세트는 목록이 제공할 수 없는 세트 컬렉션에 구성원이 있는지 여부를 확인하는 중요한 인터페이스를 제공합니다.
세트 데이터 구조를 사용하면 일부 집합 데이터를 저장할 수 있습니다. 예를 들어 Weibo 애플리케이션에서는 사용자의 모든 팔로어를 세트에 저장할 수 있으며 모든 팬을 세트에 저장할 수 있습니다.
redis는 집합에 대한 교집합, 합집합, 차이 등의 연산도 제공하므로 공통 관심, 공통 선호, 2급 친구 등의 기능을 구현하는 데 매우 편리할 수 있습니다.
set과 마찬가지로 sorted set도 Stirng 유형 요소의 모음입니다. 차이점은 각 요소가 이중 유형 점수와 연관되어 있으며 요소의 순서는 점수에 따라 결정된다는 점입니다.
sorted set은 삽입 순서, 즉 자동 정렬입니다.
일반적으로 사용되는 명령: zadd, zrange, zrem, zcard 등
정렬되고 중복되지 않은 세트 목록이 필요한 경우 정렬된 세트 데이터 구조를 선택할 수 있습니다.
적용 예시:
(1) 예를 들어 학급 전체의 성적을 저장하기 위해 설정값은 동급생의 학생 번호, 점수는 성적이 될 수 있습니다.
(2) 순위 적용, 점수를 기준으로 상위 N명의 사용자 나열 등
subscribe, unsubscribe 및 게시는 게시 및 구독 일반을 구현하는 세 가지 명령입니다.
발신자(정보를 보내는 클라이언트)가 특정 수신자(정보를 받는 클라이언트)에게 직접 정보를 보내는 것이 아니라, 채널(채널)로 정보를 보내고, 채널(채널)은 정보를 전달합니다. 이 채널에 관심이 있는 모든 구독자.
발신자는 구독자에 대한 정보를 알 필요가 없으며 구독자는 어떤 클라이언트가 정보를 보냈는지 알 필요가 없으며 관심 있는 채널에만 주의하면 됩니다.
매우 가볍고 간결하게 설계된 Redis의 게시/구독은 메시지 게시 및 구독의 기본 기능을 달성하지만 아직 메시지 지속성과 같은 다양한 엔터프라이즈 수준 기능을 제공하지 않습니다.
redis 클라이언트는 메시지를 게시하고 다른 여러 redis 클라이언트는 메시지를 구독하는 즉시 삭제됩니다. Redis는 게시된 메시지를 유지하지 않고 이전에 구독한 메시지만 받을 수 있습니다. 해당 채널의 뉴스를 볼 수 없습니다.
메시지 게시자, 즉 게시 클라이언트에는 전용 링크가 필요하지 않습니다. 메시지를 게시하는 동안 동일한 redis-client 링크를 사용하여 incr 등의 다른 작업을 수행할 수 있습니다.
(4) 지금까지는 기본적으로 다음이 보장됩니다. 게시된 모든 메시지는 각 "구독자 메시지 대기열"에 유지됩니다.
(5) 구독 측에서는 구독 메시지가 수신될 때마다 몇 주 동안 사용한 후 자체 "구독"을 삭제해야 합니다. 구독 종료가 시작되면 "구독자 메시지 큐"에 남은 레코드가 있는 것으로 확인되면 먼저 해당 메시지를 사용한 다음 구독합니다.
위 방법을 사용하면 성공적으로 도착한 메시지가 손실되지 않고 소비되어야 합니다.
transactions
redis 트랜잭션은 한 번에 여러 명령을 실행할 수 있습니다.
(1) 트랜잭션 시작
(2) 명령 대기열트랜잭션은 트랜잭션 내에서 별도의 격리된 작업입니다. 모든 명령은 직렬화되어 순서대로 실행됩니다.
트랜잭션 실행 중에는 다른 클라이언트가 보낸 명령 요청으로 인해 중단되지 않습니다.
단일 Redis 명령의 실행은 원자성이지만 Redis는 트랜잭션의 원자성을 유지하기 위한 메커니즘을 추가하지 않으므로 Redis 트랜잭션의 실행은 원자성이 아닙니다.
트랜잭션은 패키지된 배치 실행 스크립트로 이해될 수 있지만 배치 명령은 원자성 작업이 아닙니다. 중간에 명령이 실패해도 이전에 실행된 명령이 롤백되거나 후속 명령이 실행되지 않습니다. .
multi, exec, Discard 및 watch 명령은 Redis 트랜잭션의 기초입니다.
multi:
(1) multi 명령은 트랜잭션을 시작하는 데 사용되며 항상 ok를 반환합니다.
(2) 다중 명령이 실행된 후 클라이언트는 계속해서 원하는 만큼의 명령을 서버에 보낼 수 있습니다.
(3) 이러한 명령은 즉시 실행되지 않지만 대기열에 배치됩니다. exec 명령은 호출되면 대기열의 모든 명령이 실행됩니다.
exec:
(1) exec 명령은 트랜잭션의 모든 명령을 트리거하고 실행하는 역할을 담당합니다. (2) 다중을 사용하여 트랜잭션을 연 후 연결이 끊어져 클라이언트가 exec 명령을 성공적으로 실행하지 못하는 경우 , 그러면 트랜잭션의 모든 명령이 실행되지 않습니다.
(3) 반면, 클라이언트가 트랜잭션을 연 후 exec 명령을 성공적으로 실행하면 트랜잭션의 모든 명령이 실행됩니다.
discard:
(1) Discard를 호출하면 클라이언트는 트랜잭션 대기열을 지우고 트랜잭션 실행을 포기할 수 있습니다.watch:
(1) watch 명령은 Redis 트랜잭션에 대한 확인 및 설정(CAS) 동작을 제공할 수 있습니다.(2) watch를 사용하면 exec 명령을 조건부로 실행할 수 있습니다. 모니터링되는 모든 키가 수정되지 않았다는 전제 하에서만 트랜잭션을 실행할 수 있습니다. 이 조건이 충족되지 않으면 트랜잭션이 실행되지 않습니다.
(3) watch를 사용하여 만료 시간이 있는 키를 모니터링하면 키가 만료되더라도 트랜잭션이 계속 실행될 수 있습니다.
(4) watch는 여러 번 호출할 수 있으며, watch가 실행되는 시점부터 exec가 호출될 때까지 상태 모니터링이 적용됩니다.
(5) exec가 호출되면 트랜잭션 성공 여부에 관계없이 모든 Health 모니터링이 취소됩니다.
(6) 클라이언트가 링크 연결을 끊으면 클라이언트의 상태 모니터링도 취소됩니다.
위 내용은 Redis의 데이터 유형은 무엇입니까? Redis의 다양한 데이터 유형 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!