Điều này là do không có tự động xả stdout khi redis-cli hiển thị các thông báo liên quan đến đăng ký. Vì vậy, các thông báo cuối cùng trước khi dừng redis-cli không xuất hiện trong tệp đầu ra.
Không có tùy chọn nào bạn có thể sử dụng để thực thi xả một cách có hệ thống, redis-cli.c cần được vá. Trong mã nguồn Redis, hãy chỉnh sửa src / redis-cli.c và tìm đoạn mã sau. Thêm dòng fflush bị thiếu.
if (config.pubsub_mode) {
if (config.output != OUTPUT_RAW)
printf("Reading messages... (press Ctrl-C to quit)\n");
while (1) {
if (cliReadReply(output_raw) != REDIS_OK) exit(1);
// The following line must be added
fflush(stdout);
}
}
Khi redis-cli đã được biên dịch lại, nó sẽ hoạt động như mong đợi.