성능면에서 Redis의 홉 수를 최소화해야합니다. 나는 HMSET에게 C++ 코드에서 여러 번 호출하고 레디 스 한 호출 루아 스크립트와 설정 여러 레디 스 해시 키를 사용하여이를 변경하는 poosible 경우 내가 조사하고있다 : 나는 스크립트에 전달할 수있는 방법Lua 스크립트를 사용하여 여러 HMSET에서 Redis로
HMSET myhash1 field1 "Hello" field2 "World"
HMSET myhash2 field1 "Hello" field2 "World"
HMSET myhash3 field1 "Hello" field2 "World"
...
HMSET myhashN field1 "Hello" field2 "World"
을 여러 해시 키 및 여러 필드/값? 이타 마르 하버의 의견을 바탕으로
== UPDATE , 나는 내 문제는 공간이 키와 ARGV 값 사이에 누락 된 쉼표 것을 알아 냈어 - 나는 다음과 같은 스크립트에 결국
:local k = 1
for i=1, #KEYS do
if redis.call('hmset', KEYS[i], ARGV[k], ARGV[k+1], ARGV[k+2], ARGV[k+3]) == 1 then
return 1
end
k = k + 4
end
return 0
redis-cli --eval /var/tmp/script.lua myhash1 myhash2 , field1 "Hello" field2 "World" field1 "Hello" field2 "World"
필드 이름을 반복하거나 각 키의 임의의 수/필드/값을 전달하지 않도록 추가로 최적화 할 수 있는지 확실하지 않습니다.
안녕하세요 @Itamar Haber, 답장을 보내 주셔서 감사합니다. 불행히도, 사용중인 nekipelov/redisclient는 파이프 라이닝을 지원하지 않습니다. – gliatsos
스크립트를 사용하십시오.) 예제가 필요합니까? –
내 주요 문제는 KEYS의 해시 키와 필드 값을 ARGV에 전달하는 방법입니다. 지금까지의 모든 시도는 KEYS를 채우고 있지만 ARGV는 비어 있습니다. 당신은 저에게보기를 의뢰 할 수 있는가? 고맙습니다! – gliatsos