Tùy thuộc vào cách cấu trúc khóa của bạn được trình bày, tôi khuyên bạn nên nối các lệnh zincr. Bạn có một kích hoạt "cam kết" dễ dàng - yêu cầu. Nếu bạn phải lặp lại các tham số của mình và ghi từng khóa, thì khi kết thúc yêu cầu, hãy chuyển lệnh thực thi sẽ rất nhanh. Tôi đã triển khai một hệ thống như bạn mô tả vừa là cgi vừa là ứng dụng Django. Tôi đã thiết lập một cấu trúc chính dọc theo những dòng sau:
YYYY-MM-DD:HH:MM -> bộ đã sắp xếp
Và có thể xử lý Một cái gì đó như 150000-200000 gia số mỗi giây ở phía redis với một quy trình duy nhất sẽ rất nhiều cho tình huống được mô tả của bạn. Cấu trúc khóa này cho phép tôi lấy dữ liệu dựa trên cửa sổ thời gian. Tôi cũng đã thêm hết hạn vào các phím để tránh ghi quá trình dọn dẹp db. Sau đó, tôi có một cronjob sẽ thực hiện các hoạt động thiết lập thống kê "cuộn lên" theo hàng giờ, hàng ngày và hàng tuần bằng cách sử dụng các biến thể của mẫu khóa nói trên. Tôi đưa ra những ý tưởng này vì chúng là cách bạn có thể tận dụng các khả năng có sẵn của Redis để làm cho phía báo cáo đơn giản hơn. Có nhiều cách khác để thực hiện nhưng cách này có vẻ hoạt động tốt.
Như đã lưu ý bởi eyossi, khóa toàn cầu có thể là một vấn đề thực sự với các hệ thống thực hiện ghi và đọc đồng thời. Nếu bạn đang viết điều này như một hệ thống thời gian thực, đồng thời có thể là một vấn đề. Nếu đó là hệ thống phân tích cú pháp nhật ký "end if day" thì nó sẽ không có khả năng kích hoạt tranh chấp trừ khi bạn chạy nhiều phiên bản của trình phân tích cú pháp hoặc báo cáo tại thời điểm nhập. Liên quan đến việc giữ cho quá trình đọc nhanh chóng Trong Redis, tôi sẽ cân nhắc việc thiết lập một phiên bản redis chỉ đọc được tách ra khỏi phiên bản chính. Nếu bạn đặt nó trên máy chủ đang chạy báo cáo và trỏ quá trình báo cáo vào nó thì sẽ rất nhanh chóng để tạo báo cáo.
Tùy thuộc vào bộ nhớ khả dụng của bạn, kích thước tập dữ liệu và liệu bạn có lưu trữ bất kỳ loại dữ liệu nào khác trong phiên bản redis hay không, bạn có thể cân nhắc việc chạy máy chủ redis 32 bit để giảm mức sử dụng bộ nhớ. Một phiên bản 32b sẽ có thể giữ nhiều loại dữ liệu này trong một phần nhỏ của bộ nhớ, nhưng nếu chạy Redis 64 bit bình thường thì bạn không nên sử dụng quá nhiều bộ nhớ. Như mọi khi, hãy kiểm tra các kiểu sử dụng của riêng bạn để xác thực