레 디 스 실전 - 독서 노트 - 제1장
기간: 2017 년 10 월 02 일 01: 13: 48
제 1 장
모두 다섯 가지 구조 가 있다
① String ② List ③ SET ④ HASH ⑤ ZSET (질서 있 는 집합)
① 문자열 (문자열)
데이터 구조:
+--hello( )----string( )-----+
| world( ) |
| |
+---------------+--------------------+
그 중 에는 다음 과 같은 조작 명령 이 있다.
명령 하 다.
행위.
set
주어진 키 에 저 장 된 값 가 져 오기
get
주어진 키 에 저 장 된 값 설정
del
주어진 키 에 저 장 된 값 삭제 (이 명령 은 모든 형식 에 사용 할 수 있 습 니 다)
② 리스트 (리스트)
하나의 목록 구 조 는 여러 문자열 을 질서 있 게 저장 할 수 있다.
+--list-key( )---------list---+
|item |
|item2 |
|item |
| |
+-------------------------------+
조작 방법
명령 하 다.
행위.
rpush
주어진 값 을 목록 의 오른쪽 끝 에 밀어 넣 습 니 다.
lrange
주어진 범위 에 있 는 목록 의 모든 값 가 져 오기
lindex
위치 지정 에 있 는 단일 요소 목록 가 져 오기
lpop
목록 의 왼쪽 끝 에서 값 을 팝 업 하고 팝 업 된 값 을 되 돌려 줍 니 다.
③ 설정 (집합)
redis 의 집합 과 목록 은 여러 문자열 을 저장 할 수 있 습 니 다. 그들 사이 의 차이 점 은 목록 에 같은 문자열 을 여러 개 저장 할 수 있 고 집합 은 해시 표를 사용 하여 자신 이 저장 한 모든 문자열 이 다 릅 니 다. (이 산 목록 은 키 만 있 지만 키 와 연 결 된 값 은 없습니다)
데이터 구조
+--list-key( )---------set---+
|item |
|item2 |
|item3 |
| |
+-------------------------------+
중복 불가.
명령 하 다.
행위.
sadd
주어진 요 소 를 집합 에 추가 합 니 다.
smembers
집합 에 포 함 된 모든 요 소 를 되 돌려 줍 니 다.
sismembers
주어진 요소 가 집합 에 존재 하 는 지 확인 합 니 다.
srem
주어진 요소 가 집합 에 존재 한다 면 이 요 소 를 제거 합 니 다.
④ Hash (해시, 즉 자바 의 맵)
Redis 의 해시 에는 여러 키 쌍 의 맵 을 저장 할 수 있 습 니 다.문자열 과 마찬가지 로 해시 에 저 장 된 값 은 문자열 일 수도 있 고 숫자 값 일 수도 있 으 며 사용 자 는 해시 에 저 장 된 숫자 값 에 대해 자체 증가 작업 이나 자체 감소 작업 을 수행 할 수 있 습 니 다.
데이터 구조:
+--hash-key------------------hash---+
|sub-key1 | value1 |
|sub-key2 | value2 |
|sub-key3 | value3 |
| | |
+---------------+-------------------+
명령 하 다.
행위.
hset
해시 에 주어진 키 쌍 을 연결 합 니 다.
hget
지정 한 해시 키 의 값 가 져 오기
hgetall
해시 에 포 함 된 모든 키 쌍 가 져 오기
hdel
주어진 키 가 해시 에 존재 한다 면 이 키 를 제거 합 니 다.
⑤ Zset (질서 있 는 집합)
질서 있 는 집합 은 해시 와 마찬가지 로 키 쌍 을 저장 하 는 데 사 용 됩 니 다. 질서 있 는 집합 키 는 구성원 (member) 이 라 고 부 르 며 각 구성원 은 각각 다 릅 니 다.질서 있 게 집합 하 는 값 은 점수 (score) 라 고 불 리 며, 분 가 는 부동 소수점 이 어야 합 니 다.질서 있 는 집합 은 redis 에서 유일 하 게 구성원 이 요 소 를 방문 할 수 있 고 가치 와 가치 의 배열 순서에 따라 요 소 를 방문 할 수 있 는 구조 이다.
데이터 구조:
+--zset-key--------zset-+
|member1 | 728 |
|member2 | 982 |
| | |
+---------------+-------+
명령 하 다.
행위.
zadd
주어진 값 을 가 진 구성원 을 질서 있 는 집합 에 추가 합 니 다.
zrange
요소 가 질서 있 게 배열 되 어 있 는 위치 에 따라 질서 있 는 집합 에서 여러 요 소 를 가 져 옵 니 다.
zrangebyscore
주어진 값 범위 내 에 있 는 모든 요 소 를 질서 있 게 집합 합 니 다.
zrem
주어진 구성원 이 질서 있 는 집합 에 존재 한다 면 이 구성원 을 제거 합 니 다.
수확 1. redis 에서 원자 성 자체 증가 또는 자체 감 소 를 실현 합 니 다.
예 를 들 어 하나의 Map 에서 문장 article: 1 로 가정 하면 하나의 속성 은 votes (사용자 투표 수) 입 니 다.이때 사용 자 는 그 에 게 한 표를 던 졌 다.그러면 나 는 hincrby 함 수 를 사용 하여 이 필드 를 하나 추가 할 수 있다.
+--article:1---------------------hash---+ +--article:1---------------------hash---+
|title | Go to statement | |title | Go to statement |
| | considered harmful | | | considered harmful |
|link | http://goo.gl/kZUSu | |link | http://goo.gl/kZUSu |
|poster | user:83271 | |poster | user:83271 |
|time | 1331382699.33 | |time | 1331382699.33 |
|votes | 528 |==>|votes | 529 |
| | | | | |
+---------------+-----------------------+ +---------------+-----------------------+
conn.hincrby('article:1','votes',1)
그리고 우 리 는 이 필드 를 redis 에서 꺼 낼 필요 도 없고 + 1 의 조작 을 다시 실행 할 필요 도 없고 업무 의 원자 성 을 확보 할 필요 도 없습니다. 함수 자체 가 업무 의 원자 성 을 보장 하기 때 문 입 니 다.
votes
즉 변 529
마찬가지 로 질서 있 는 집합 에서 우 리 는 특정한 질서 있 는 집합 중의 특정한 요소 의 score 에 대해 추가 작업 을 수행 해 야 한다. 마찬가지 로 다른 유사 한 방법 을 호출 할 수 있다.+--score:--------------------zset---+ +--score:--------------------zset---+
|article:1 | 1332164063.49 | =========>|article:1 | 1332164495.49 |
|articel:100 | 1332174713.47 | |articel:100 | 1332174713.47 |
|··· | ···| |··· | ···|
+---------------+-------------------+ +---------------+-------------------+
conn.zincrby('score:','article:1',432)
이렇게 해서 우 리 는
score:
이 질서 있 는 집합 중의 article:1
대상 의 score 에 대해 432 의 가중치 를 증가 시 켰 다.수확 2. 일회 성 할당 맵 함수 - hmset
우 리 는 일반적으로 맵 을 조작 할 때 모두 사용한다
put
.그러나 redis 의 hash 를 여러 번 put 하면 성능 도 낭비 하고 시간 도 낭비 합 니 다.따라서 만약 우리 가 redis 중의 hash 에 대해 키 값 을 입력 해 야 한다 면 hmset
함 수 를 사용 할 수 있 습 니 다.conn.hmset('article:22',{
'title':title,
'link':link,
'poster':poster,
'time':now,
'votes':1
})
상기 코드:
article:1
에 대한 각 속성 값 초기 화 를 실 현 했 습 니 다.즉:
+--article:22--------hash---+
|title | title |
|link | link |
|poster | poster |
|time | now |
|votes | 1 |
| | |
+---------------+-----------+
수확 3. 집합 과 질서 집합
첫 번 째 set 집합 이름 이
groups:programming
라 고 가정 하면 그 안에 저 장 된 것 은 문장의 분류 이다. 예 를 들 어 과학기술 분야 의 문장 세 편 이다.두 번 째 질서 있 는 집합 이름 은
score:
이 고 그 안에 저 장 된 것 은 모든 문장의 평 점 이다.+--groups:programming-----set---+ +--score:----------------zset-------+
| article:92617 | |article:83729 | 1330425826.28 |
| article:100408 | |article:92617 | 1331147511.67 |
| article:83729 | |article:100635 | 1332164063.49 |
| | |article:100408 | 1332174713.47 |
+-------------------------------| |article:100716 | 1332225027.26 |
|··· | ··· |
| | |
+---------------+-------------------+
zinterstore 작업 을 수행 하고 있 습 니 다.
conn.zinterstore('score:programming', ['groups:programming','score:'], aggregate=max)
이렇게 하면 좌 련 은 새로운 zset 이름
score:programming
을 얻 을 수 있다.+--score:programming--------zset---+
|article:83729 | 1330425826.28 |
|article:92617 | 1331147511.67 |
|article:100408 | 1332174713.47 |
| | |
+---------------+-------------------+
이 를 통 해 좌 련 의 효 과 를 실현 하고 지 정 된 글 의 그룹 이 이 글 들 을 보 는 평 점 을 실현 했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.