2012-05-30 14 views
32

Mam długi plik tekstowy poleceń redis, które muszę wykonać za pomocą interfejsu wiersza poleceń:Wykonywanie partii poleceń za pomocą redis cli

np.

DEL 9012012

DEL 1212

DEL 12214314

itp

I nie wydają się znaleźć sposób, aby wprowadzić komendy szybciej niż po jednym na raz. Istnieje kilkaset tysięcy wierszy, więc nie chcę po prostu umieszczać ich wszystkich w jednym poleceniu DEL, one również nie muszą działać jednocześnie.

Odpowiedz

47

następujący kod działa dla mnie z REDiS 2.4.7 na Mac

./redis-cli < temp.redisCmds 

Czy to zaspokoić swoje wymagania? A może szukasz sposobu, aby programowo zrobić to szybciej?

+0

Jeśli uwierzytelniony, a następnie użyć 'Redis-cli -a arun

+0

W Windows PowerShell: 'Get-Content cmds.txt | redis-cli' –

7

Można użyć redis-cli --pipe do włożenia masy. Jest dostępny od wersji 2.6-RC4 i Redis 2.4.14. Na przykład:

cat data.txt | redis-cli --pipe 

Więcej informacji w: http://redis.io/topics/mass-insert

+1

Jeśli chcesz wykonać wiele poleceń, np. wybierz # i flushdb, a następnie użyj rozwiązania ControlAltDel, ponieważ nie zadziała z opcją --pipe. – 10basetom

+0

// Czy istnieje sposób użycia opcji '--pipe', która pozwoliłaby mu działać w przypadku tego pytania? –

+0

Udało mi się użyć opcji '--pipe', aby wykonać zbiór mas poleceń' EXPIRE', więc działa on dla rzeczy innych niż wstawianie. Uwaga: Musiałem się upewnić, że każde polecenie w pliku było oddzielone zarówno znakiem powrotu karetki, jak i wiersza, a nie wierszem. – Nathan

37

Jeśli nie chcesz, aby plik, użyj echo i \n

echo "DEL 9012012\nDEL 1212" | redis-cli 
+0

Pracowałam jak urok dla mnie! – FearlessFuture

+11

W niektórych systemach operacyjnych należy używać 'echo -e', aby system operacyjny interpretował' \ n' zgodnie z oczekiwaniami. Pamiętaj, że zawsze możesz zmienić domyślne redis dilimited za pomocą 'redis-cli -d ' – Kirzilla

+0

na CentOS, 'echo -e" DEL 9012012 \ nDEL 1212 "| redis-cli' –

Powiązane problemy