[REDIS] 레디 스 - 대량 삽입 및 카운터
REDIS레디 스 - 대량 삽입 및 카운터
이것은 유래에 여기 내 첫 번째 질문입니다. 친애하는 사회, 감사 당신의 결합 된 지식과 전문 지식을 많이!
레디 스 그렇게 나와 함께 곰하시기 바랍니다에 나는 확실히 간단한 해결책이있어 나는이 새로운 해요.
redis-server --version
=> 레디 스 서버 2.6.14 V = SHA = 00,000,000 : 0 = malloc에 libc의 비트 = 64
redis-cli --version
=> 반복-CLI 2.6.14
나는 "레디 스 대량 삽입을 사용하는 방법?"읽고 어떻게 레디 스 대량 삽입을 사용 하는가? 검색 좀하고이 INCR 기능을 레디 스에 대한 칭찬을 많이 읽었습니다. 하지만 난 정말 모든 것을 이해하지 않으며 그것은 나를이 레디 스 - 내부적으로 만 수행하는 데 도움이되지 않습니다.
내 목표: 나는 수입에 레디 스에 텍스트의 'N'라인을 원하는 정확히 순서대로 나중에 검색 할 수 있습니다.
키 1 : 2, 키 3 등 각 회선 I 키와 같은 고유 키를 설정할 키의 한 부분으로 증가 카운터를 사용하여 나중에 그들이 레디 스에 저장된 것과 같은 순서로 줄을 검색 할 수 있어요.
이제 (레디 스 질량 삽입하지 않고) 내가 쉽게이 문제를 해결 같은 레디 스 - CLI 호출을 생성하는 awk 스크립트를 사용하여 :
cat data.txt | awk -f myscript.awk | bash
이 같은 "data.txt로"외모 : 이것은 첫 번째 줄입니다. 이 여기에 더 이상 두 번째 줄입니다.
"myscript.awk"는 다음과 같습니다 :
#!/usr/bin/awk -f
### This section is being applied before any line is read:
BEGIN {
# Set counter initially to Zero
print "redis-cli SET counter 0"
}
### This section is being applied per line read into awk:
{
# Increase counter by One
print "redis-cli INCR counter"
# Read current counter from redis into an variable
print "MYCOUNTER=`redis-cli GET counter`"
# Use this variable as counter for the key
print "redis-cli SET key:$MYCOUNTER \"" $0 "\""
# Retrive stored value from redis for illustration
print "redis-cli GET key:$MYCOUNTER"
}
의 출력 "고양이 data.txt로 | -f myscript.awk awk가 | 배쉬는":
OK
(integer) 1
OK
"This is the first line."
(integer) 2
OK
"This here is the much longer second line."
그래서 모든 것이 잘입니다.
하지만 그 대신 수입 라인에 두 번 "레디 스-CLI를"호출 나는 기능 "삽입 대량의"레디 스를 사용하고 싶습니다. 여기에서 나는 당신의 도움이 필요합니다 :
어떻게에만 레디 스에서이 같은 일을 할 것인가?
SET counter 0
=> OK
INCR counter
=> (integer) 1
GET counter
=> "1"
SET KEY:{counter} "Content of line 1"
=> OK
INCR counter
=> (integer) 2
GET counter
=> "2"
SET KEY:{counter} "Different content of line 2"
=> OK
등 등
은 "GET 카운터"라인은 그림을위한 것입니다.
어떤 도움에 감사드립니다. 다시 한 번 감사드립니다!
버니
해결법
-
==============================
1.이것에 대한 목록을 사용합니다. 각 라인에 대한 새 키를 사용할 이유가 없습니다. 모든 목록 명령은 여기에 있습니다,하지만 당신이 원하는 하나 RPUSH입니다. 당신은 단지 그렇게 할 것이다, 그래서 당신은 같은 라인에서 한 번에 여러 값을 rpush 수 있습니다 :
이것에 대한 목록을 사용합니다. 각 라인에 대한 새 키를 사용할 이유가 없습니다. 모든 목록 명령은 여기에 있습니다,하지만 당신이 원하는 하나 RPUSH입니다. 당신은 단지 그렇게 할 것이다, 그래서 당신은 같은 라인에서 한 번에 여러 값을 rpush 수 있습니다 :
RPUSH some_key line1 line2 ... lineN
그런 다음 검색 할 수 있습니다 :
LRANGE some_key 0 -1
빠르고 쉬운!
from https://stackoverflow.com/questions/18345242/redis-mass-inserts-and-counters by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 트래비스 CI에 레디 스를 실행 (0) | 2020.01.25 |
---|---|
[REDIS] 독특한 원자 번호 생성기로 레디 스는 - 피하기 경쟁 조건에 웹 앱 안전한 방법 스레드 (0) | 2020.01.25 |
[REDIS] 레디 스 개념 : 메모리 또는 DB에서? (0) | 2020.01.25 |
[REDIS] 나는 루비 다이제스트 :: SHA1 인스턴스 객체를 직렬화 할 수 있나요? (0) | 2020.01.25 |
[REDIS] 얼랑 및 레디 스 : 읽기 성능 (0) | 2020.01.25 |