이 기사는 Redis의 데이터 구조에 대한 심층적인 이해를 제공하고 이러한 데이터 구조의 적용 시나리오를 살펴보는 데 도움이 되기를 바랍니다.
Redis는 ANSI C 언어로 작성된 키-값 저장 시스템입니다. 키 유형은 문자열입니다. [관련 권장 사항: Redis 동영상 튜토리얼]
8가지 데이터 유형 값 데이터 유형:
공통 데이터 유형
문자열 문자열 유형
목록 목록 유형
세트 컬렉션 유형
sortedset(zset) 주문 세트 유형
해시 유형
일반적이지 않은 데이터 유형
bitmap 비트맵 유형
geo 위치 유형
스트림 유형
참고
Redis의 명령은 대소문자 무시,(SET 설정), 키는 대소문자 무시하지 않음(NAME 이름)
Redis' String 함수 문자열, 정수, 부동의 세 가지 유형의 값을 표현합니다. 포인트 번호 100.01은 6자리 문자열입니다.
명령 이름 | 명령 형식 | 명령 설명 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
set | 키 값 설정 | 값 할당 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
get | 키 가져오기 | 값 가져오기 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
getset | getset 키 값 | 값 가져오기 및 값 할당 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mset | MSET key1 value1 key2 value2 .. keyN valueN | 여러 개 설정 key 값을 해당 값으로 변환합니다. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mget | MGET KEY1 KEY2 .. KEYN | 주어진 키 전체(하나 이상)의 값을 반환합니다 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
EXPIRE | EXPIRE 키 초 | 키의 만료 시간(초) 설정 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
append | 키 값 추가 | 꼬리에 값 추가 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
strlen | strlen key | 문자열 길이 가져오기 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
setnx | setnx 키 값 | 값 그렇지 않은 경우 할당을 사용하십시오. 존재 키 값 N P 설정 | decr|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
숫자 감소 | decrby | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
지정된 정수 감소 |
명령 설명 | ||
---|---|---|
다음에서 목록 삽입 the left | lpop | |
목록의 왼쪽에서 꺼내세요 | rpush | |
목록의 오른쪽에서 삽입 | rpop | |
목록 오른쪽부터 꺼내세요 | lpushx | |
목록의 선두에 값을 삽입하세요 | blpop | |
목록 왼쪽에서 목록이 비어있을 때 차단, 최대 차단 시간을 초 단위로 설정할 수 있습니다. | llen | |
목록에 있는 요소 수 가져오기 | lrange | |
목록에서 지정된 간격의 요소를 반환합니다. 간격은 start 및 end | lset | |
목록의 인덱스 위치에 있는 요소를 다음으로 설정합니다. value의 값 | rpoplpush | |
key1 목록의 오른쪽에서 Pop out하여 key2 목록의 왼쪽에 삽입합니다 | rpushx | |
inserts 값을 목록 끝에 넣습니다. value | brpop | |
는 목록이 비어 있으면 차단됩니다. 최대 차단 시간은 초 단위로 설정할 수 있습니다. | lindexlindex 키 값 | 목록에서 아래 첨자 인덱스가 있는 요소를 가져옵니다. 인덱스는 0부터 시작합니다. index |
ltrim | ltrim 키 시작 끝 | 목록을 정리하고 시작부터 끝 범위만 유지합니다. end |
brpoplpush | brpoplpush | key1 목록의 오른쪽에서 Pop하여 key2 목록의 왼쪽에 삽입합니다. 그러면 key1 key2 |
linsert | linsert 키가 피벗 전/후에 차단됩니다. value | 목록의 피벗 |
애플리케이션 시나리오 |
sadd | sadd 키 값1 값2 .... | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
srem | srem 키 값1 값2 .... | 컬렉션 키에서 요소 제거 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
smembers | smembers key | Get all elements in the collection | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
spop | spop key count | 는 설정된 키에서 개수 요소를 선택하고 해당 요소는 키에서 삭제됩니다 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
srandmember | srandmember key count | set key에서 count 요소를 선택하고 해당 요소는 키에서 삭제되지 않습니다. sismember 키 멤버 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sinter | sinter 키 1 key2 key3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sdiff | sdiff key1 key2 key3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
sunion | sunion key1 key2 key3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
명령 이름 | 명령 형식 | 명령 설명 |
---|---|---|
zadd | zadd 키 스코어1 멤버1 스코어2 멤버2 ... | 순서된 세트 키에 점수가 있는 요소 추가 |
zrem | zrem 키 mem1 mem2 .... | 순서된 세트 키에서 요소 제거 |
zcard | zcard key | 주문된 집합의 요소 수를 가져옵니다 |
zcount | zcount key min max | 점수 값이 [min,max]에 있는 집합의 요소 수를 반환합니다. Interval |
zincrby | zincrby 키 증분 멤버 | 는 주문된 세트의 요소 멤버의 점수입니다. 키 플러스 증분 |
zscore | zscore 키 멤버 | 는 주문된 세트의 요소 멤버의 점수를 반환합니다. set key |
zrank | zrank key member | set 내 멤버의 순위를 가져옵니다. (점수에 따라 작은 것부터 큰 것까지) |
zrange | zrange key start end | 주문한 요소를 가져옵니다. 시작 첨자부터 정지 첨자까지 양의 순서로 키를 설정하세요 |
zrevrank | zrevrank 키 멤버 | 세트 내 멤버의 순위를 가져옵니다(점수 기준으로 큰 것부터 작은 것까지) |
zrevrange | zrevrange key start end | 시작 첨자부터 정지 첨자까지 순서대로 설정된 키를 가져옵니다. Elements |
Redis 해시는 필드와 필드 값의 매핑을 제공하는 문자열 유형의 필드와 값 매핑 테이블입니다. 각 해시는 2^32-1 키-값 쌍(40억 개 이상)을 저장할 수 있습니다.
장점
1. 유사한 데이터를 분류하여 통합하여 저장하므로 데이터 관리가 용이합니다
2. 문자열 연산에 비해 메모리와 CPU를 덜 소모합니다
3. 문자열 저장에 비해 더 많은 공간 절약
명령 설명 | ||
---|---|---|
의 키 값 저장 해시 테이블 key | hmset | |
해시 테이블 key | hget | |
필드가 존재하는지 확인 | hmget | |
필드 값 가져오기 | hsetnx | |
존재하지 않는 해시 테이블 키의 키 값 저장 | hexists | |
파일이 존재하는지 여부 판단 | hgetall | |
여러 필드 값 가져오기 | hdel | |
지정된 필드 삭제 | hincrby | |
지정된 필드 자동 증가의 hincrby 키 필드 | hlen | |
필드 수 가져오기 |
공통 명령
명령 설명 | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
getbit | getbit 키 오프셋 | |||||||||||||||||||||
bitcount | bitcount key | |||||||||||||||||||||
bitpos | bitpos 열쇠 value | |||||||||||||||||||||
bitop | bitop 및[or/xor/not] destkey key [key...] | |||||||||||||||||||||
geoadd 키 경도 위도 멤버 이름 1 경도 1 위도 1 멤버 이름 2 경도 2 위도 2... | 지리 좌표 추가 | |
---|---|---|
돌아가기 회원 위도 및 경도 and geodist |
geodist 키 멤버 1 멤버 2 단위 멤버 사이의 교정 거리 |
georadiusbymember |
geohash | geohash 키 멤버 이름 1 멤버 이름 2... | |
적용 시나리오 | ||
3. "주변 사람" 찾기 | 스트림 데이터 스트림 유형 | stream은 Redis 5.0 이후에 추가된 새로운 데이터 구조로, 영구 메시지 대기열에 사용됩니다. |
직렬화된 메시지 ID 생성 | 메시지 순회 | |
메시지 그룹 소비 | 미완료 메시지 처리 | 메시지 큐 모니터링 |
메시지 큐 사용
더 많은 프로그래밍 관련 지식을 얻으려면
프로그래밍 소개를 방문하세요! !
위 내용은 Redis의 데이터 구조에 대한 심층 분석 및 애플리케이션 시나리오에 대한 논의의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!