Ya, redis bagus untuk itu. Tetapi untuk mendapatkan intinya, pada dasarnya ada dua pendekatan untuk caching. Bergantung pada apakah Anda menggunakan kerangka kerja (dan yang mana) atau tidak, Anda mungkin memiliki opsi pertama yang tersedia dalam standar atau dengan menggunakan plugin:
- Kueri basis data cache, yaitu - kueri yang dipilih dan hasilnya akan disimpan dalam redis untuk akses yang lebih cepat selama waktu tertentu atau hingga mengosongkan cache (berguna setelah memperbarui basis data). Dalam hal ini Anda dapat menggunakan cache kueri mysql bawaan, ini akan lebih sederhana daripada menggunakan penyimpanan nilai kunci tambahan, atau Anda dapat mengganti integrasi basis data default dengan kelas Anda sendiri menggunakan cache (misalnya http://pythonhosted.org /johnny-cache/).
- Cache khusus, yaitu membuat struktur Anda sendiri untuk disimpan dalam cache dan secara berkala atau manual mengisi ulang dengan data yang diambil dari database. Ini lebih fleksibel dan berpotensi lebih kuat, karena Anda dapat menggunakan fitur redis bawaan seperti daftar atau kumpulan yang diurutkan, yang membuat overhead pembaruan jauh lebih kecil. Ini membutuhkan sedikit lebih banyak pengkodean, tetapi biasanya menawarkan hasil yang lebih baik, karena lebih disesuaikan. Contoh yang baik adalah menyimpan artikel teratas dalam bentuk daftar id redis, dan kemudian mengakses artikel bersambung dengan id yang diberikan juga dari redis. Anda dapat membuat artikel itu tidak dinormalisasi - mis. objek serial dapat berisi id pengguna serta nama pengguna, sehingga Anda dapat meminimalkan overhead kueri tambahan.
Terserah Anda untuk memutuskan pendekatan mana yang akan diambil, saya pribadi hampir selalu memilih pendekatan nomor dua. Namun, tentu saja, semuanya tergantung pada berapa banyak waktu yang Anda miliki, dan apa yang seharusnya dilakukan oleh aplikasi - Anda sebaiknya mulai dengan cache kueri mysql dan jika hasilnya tidak cukup baik, pindah ke redis dan cache kustom.