이것은 내 첫 번째 질문은 stackoverflow에 있습니다. 친애하는 커뮤니티, 다양한 지식과 전문 지식에 감사드립니다.redis - 대량 삽입 및 카운터
저는 Redis에 익숙하지 않으므로 간단한 해결책이 있다고 생각합니다.
redis-server --version
=> 레디 스 서버 2.6.14 V = SHA = 00,000,000 : 0 = malloc에 libc의 비트 =
redis-cli --version
64 => 레디 스 I-CLI 읽고 2.6.14
" Redis 대량 삽입을 사용하는 방법? " How to use Redis mass insertion?
내가 봤어 redis INCR 기능에 대한 칭찬을 많이 읽었습니다. 그러나 나는 모든 것을 정말로 이해하지 못하며 내부적으로 만 이러한 재분석을하는 데 도움이되지 않습니다.
내 목표 : 나는 레디 스에 텍스트의 'N'라인을 가져 정확히 순서대로 나중에 PIN이 할 .
각 줄마다 키 : 1, 키 : 2, 키 : 3 등의 고유 한 키를 설정했습니다. 증가하는 카운터를 키의 일부로 사용하여 나중에 동일한 그들이 redis에 저장된 순서.
cat data.txt | awk -f myscript.awk | bash
는 "data.txt로는"다음과 같습니다 이제
(레디 스 질량 삽입하지 않고) 내가 레디 스-CLI 호출과 같은를 생성하는 awk 스크립트를 사용하여 쉽게 이 문제를 해결 this :
이것은 첫 번째 줄입니다.
여기 두 번째 줄이 훨씬 깁니다.
"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로이 | AWK는 myscript.awk -f | 배쉬가":
OK
(integer) 1
OK
"This is the first line."
(integer) 2
OK
"This here is the much longer second line."
모든 게 정상입니다.
하지만 그 대신 "레디 스-CLI를"호출
두 번 수입 라인 당 나는 레디 스 "대량 삽입"기능을 사용하려고합니다. 여기에 당신의 도움이 필요합니다 :
나는 어떻게 이런 일을 redis에서만 할 수 있습니까?
은 "GET 카운터"라인
단지 설명을위한 등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
등.
도움을 주시면 감사하겠습니다. 다시 한 번 감사드립니다!
베르니
답장을 보내 주셔서 감사합니다. 부끄러움처럼 작동합니다 :-) 나는 해시로 약간의 팅크를했습니다. 그러나 목록 요소는 무작위 순서로 반환되었습니다. LRANGE는 RPUSH와 함께 저장된 순서대로 요소를 반환합니다. 맵시 있는! @Eli –
죄송합니다. 내 코멘트에 실수가 있습니다. 죄송합니다! 나는 성공하지 못한 채 "SADD"와 "SMEMBERS"를 시도했다. "SMEMBERS"가 반환되면 임의의 순서로 나타납니다. 엘리의 대답으로 인해 내 질문을 마무리하게되어 기쁩니다. @ 엘리 –