Bergantung pada bagaimana struktur kunci Anda ditata, saya akan merekomendasikan pipelining perintah zincr. Anda memiliki pemicu "komit" yang mudah - permintaan. Jika Anda mengulangi parameter dan zincr setiap kunci, maka pada akhir permintaan, berikan perintah eksekusi, itu akan sangat cepat. Saya telah menerapkan sistem seperti yang Anda gambarkan sebagai aplikasi cgi dan Django. Saya menyiapkan struktur kunci di sepanjang baris ini:
YYYY-MM-DD:HH:MM -> kumpulan yang diurutkan
Dan dapat memproses Sesuatu seperti peningkatan 150000-200000 per detik di sisi redis dengan satu proses yang seharusnya cukup untuk skenario yang Anda jelaskan. Struktur kunci ini memungkinkan saya untuk mengambil data berdasarkan jendela waktu. Saya juga menambahkan kedaluwarsa ke kunci untuk menghindari menulis proses pembersihan db. Saya kemudian memiliki cronjob yang akan mengatur operasi ke statistik "menggulung" menjadi per jam, harian, dan mingguan menggunakan varian dari pola kunci yang disebutkan di atas. Saya mengemukakan ide-ide ini karena itu adalah cara Anda dapat memanfaatkan kemampuan bawaan Redis untuk membuat sisi pelaporan lebih sederhana. Ada cara lain untuk melakukannya, tetapi pola ini tampaknya berhasil.
Sebagaimana dicatat oleh eyossi, kunci global dapat menjadi masalah nyata dengan sistem yang melakukan penulisan dan pembacaan secara bersamaan. Jika Anda menulis ini sebagai sistem waktu nyata, konkurensi mungkin menjadi masalah. Jika ini adalah sistem penguraian log "berakhir jika hari", maka kemungkinan itu tidak akan memicu pertentangan kecuali Anda menjalankan beberapa contoh pengurai atau laporan pada saat input. Berkenaan dengan menjaga pembacaan cepat Di Redis, saya akan mempertimbangkan untuk menyiapkan instance redis hanya baca yang dipisahkan dari yang utama. Jika Anda meletakkannya di server yang menjalankan laporan dan mengarahkan proses pelaporan ke sana, itu akan sangat cepat untuk menghasilkan laporan.
Bergantung pada memori yang tersedia, ukuran kumpulan data, dan apakah Anda menyimpan jenis data lain dalam instans redis, Anda mungkin mempertimbangkan untuk menjalankan server redis 32bit untuk menjaga penggunaan memori tetap rendah. Instance 32b seharusnya dapat menyimpan banyak jenis data ini dalam sebagian kecil memori, tetapi jika menjalankan Redis 64 bit normal tidak memakan terlalu banyak memori, silakan gunakan. Seperti biasa, uji pola penggunaan Anda sendiri untuk memvalidasi