2012-05-30 29 views
32

Tôi có một tệp văn bản dài các lệnh redis mà tôi cần thực thi bằng giao diện dòng lệnh redis:Thực hiện các lô lệnh bằng redis cli

ví dụ:

DEL 9012012

DEL 1212

DEL 12214314

, vv

tôi dường như không thể tìm ra một cách để nhập lệnh nhanh hơn cùng một lúc. Có hàng trăm nghìn dòng, vì vậy tôi không muốn chỉ chồng tất cả chúng vào một lệnh DEL, chúng cũng không cần chạy tất cả cùng một lúc.

Trả lời

47

đoạn mã sau làm việc cho tôi với redis 2.4.7 trên mac

./redis-cli < temp.redisCmds 

Điều đó đáp ứng yêu cầu của bạn? Hay bạn đang tìm cách xem liệu có cách nào để lập trình làm điều đó nhanh hơn không?

+0

Nếu xác thực, sau đó sử dụng 'redis-cli -a arun

+0

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

7

Có thể sử dụng redis-cli --pipe để chèn khối lượng. Nó có sẵn từ 2.6-RC4 và trong Redis 2.4.14. Ví dụ:

cat data.txt | redis-cli --pipe 

Thông tin thêm tại: http://redis.io/topics/mass-insert

+1

Nếu bạn muốn thực thi nhiều lệnh, ví dụ: chọn # và flushdb, sau đó sử dụng giải pháp ControlAltDel vì nó sẽ không hoạt động khi sử dụng tùy chọn --pipe. – 10basetom

+0

//, Có cách nào để sử dụng tùy chọn '--pipe' cho phép nó hoạt động cho câu hỏi này không? –

+0

Tôi đã có thể sử dụng tùy chọn '--pipe' để thực hiện một loạt các lệnh' EXPIRE', vì vậy nó hoạt động cho những thứ khác ngoài việc chèn. Lưu ý: Tôi phải đảm bảo mỗi lệnh trong tệp được tách biệt bởi cả dòng trả về _and_ một dòng cấp, chứ không phải _just_ một dòng cấp. – Nathan

37

Nếu bạn không muốn thực hiện một tập tin, sử dụng echo\n

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

Làm việc như một sự quyến rũ đối với tôi! – FearlessFuture

+11

Trên một số hệ điều hành, bạn nên sử dụng 'echo -e' để làm cho hệ điều hành diễn giải' \ n' như mong đợi. Hãy nhớ rằng, bạn luôn có thể thay đổi độ phân giải redis mặc định bằng cách sử dụng 'redis-cli -d ' – Kirzilla

+0

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

Các vấn đề liên quan