2012-09-07 5 views
3

Есть ли способ передать возвращаемое значение одной функции другой в Redis? Конечно, если вы используете языковой пакет (например, Ruby), это легко, но как насчет CLI?передать результаты другой команде в redis

например. что-то вроде этого, Баш стиль

redis 127.0.0.1:6379> keys student* | mget 

или что-то вроде этого

redis 127.0.0.1:6379> mget(keys student*) 

keys student* возвращает список ключей, но я понятия не имею, как извлечь все значения для этих ключей.

Мысли?

ответ

4

Из командной строки вы просто должны позволить оболочке выполнять свою работу.

./redis-cli --raw keys 'student:*' | awk '{printf "get %s\n", $1}' | ./redis-cli --raw 

Обратите внимание, что вы не должны использовать команду клавиш в приложениях из-за своей линейной сложности.

+2

Даже проще ('--raw' по умолчанию при переходе к другой команде):' redis-cli keys 'student: *' | xargs redis-cli mget'. Для унарных команд (например, 'type') используйте ученики« redis-cli keys »: * '| xargs -n1 redis-cli type'. Конечно, команда 'keys' обескуражена, и полезность этого, если у вас есть, например, команда со всеми клавишами уменьшена командой 'sort', что должно обеспечить лучшую производительность. –

+1

xargs хорош, но xargs -n1 будет разветвлять один процесс на входную строку, тогда как piping в redis-cli не будет. –

+0

Правда, это должно иметь большое значение! Спасибо за совет. –

Смежные вопросы