2016-12-07 2 views
2

나는 루아 스크립트에서 MSETNX 호출을 redis하려고합니다. 이미 존재하지 않는 값이있는 키를 설정해야합니다. 스크립트에 전달 KEYS {'key1', '', 'key2', ''}redis 인수로 루아 테이블

redis.call('MSETNX', KEYS) :

내가 좋아하는 그 일을 시도했다.

하지만이 호출에는 개별 키와 값이 인수가 아닌 테이블로 전달되어야하기 때문에 작동하지 않습니다.

이 작동 :

redis.call('MSETNX', 'key1', '', 'key2', '')

하지만 KEYS 변수는 동적이다, 그래서 나는 그런 식으로 할 수 없습니다.

각 키를 명시 적으로 나열하지 않고도 MSETNX으로 전화를 걸려면 어떻게해야합니까?

- 편집 -

그것은 unpack와 "인터"값으로 할 수 있습니까?

KEYS = {'key1', 'key2'}unpack'key1', '', 'key2', ''으로 보낼 수 있습니까? 감사!

+0

내 문제를 오해했을 수도 있습니다. 문제는 Redis에서 이것을 어떻게 실행하는 것이 아니라 내 테이블 요소를 개별 인수로 "끊는"방법이었습니다. – aturkovic

답변

3

사용 루아의 unpack 테이블에, 즉 :

redis.call('MSETNX', unpack(KEYS)) 

사이드 노트 : 해당 테이블이 스크립트에 키 이름을 전달하는 레디 스에 의해 사용되기 때문에 테이블의 이름으로 KEYS을 사용하지 마십시오.

+0

그게 다야! 포장을 푼다! 정말 고맙습니다! Btw, 나를 괴롭히는 또 다른 일에 대한 편집을 보실래요? – aturkovic

+0

사이드 노트 : 예제를 만들려고했는데, Lua 스크립트에 KEYS 변수를 할당하지 않았지만 경고를 주셔서 감사합니다. – aturkovic

+1

나는 이런 식으로는 알지 못한다. 그러나 각 항목 뒤에 공백을 넣고 테이블을 반복 쉽게 다듬을 수있다. 그리고 나서 모든 것을 풀어 라. –