Redis — cache dalam memori untuk laman web dan kedai
Redis ialah lapisan kelajuan di sebalik laman web, kedai dan marketplace yang dibina di 4buildsite: ia menyimpan dalam memori (RAM) tepat data yang mesti dihidangkan serta-merta — halaman cache, sesi, troli, had kadar — dan memberi respons dari memori. PostgreSQL kekal sebagai sumber kebenaran; Redis melindunginya ketika trafik tinggi. Ia disertakan dan diurus oleh platform, tanpa sebarang konfigurasi di pihak anda.
Apakah Redis dan mengapa ia digunakan untuk cache
Redis (REmote DIctionary Server) ialah pangkalan data dalam memori sumber terbuka: ia menyimpan data dalam RAM dan bukan pada cakera, jadi ia menjawab dengan kependaman yang rendah. Di 4buildsite kami menggunakannya sebagai lapisan pecutan di hadapan PostgreSQL — untuk semua yang mesti dihidangkan serta-merta: halaman, sesi, troli dan had kadar.
Tidak seperti cakera, RAM menawarkan akses yang jauh lebih pantas, dan Redis menambah struktur data natif (string, hash, list, set, sorted set, stream) yang membolehkan operasi kompleks terus dalam memori, tanpa pergi-balik ke pangkalan data utama. Pemprosesan arahan bersifat single-thread, jadi tingkah lakunya boleh diramal dan bebas daripada race condition.
- Kependaman rendah dan daya pemprosesan tinggi pada satu nod, kerana data kekal dalam memori
- Struktur natif: hash untuk sesi, sorted set untuk papan pendahulu dan rate limiting, stream untuk baris gilir
- Single-thread pada arahan → tingkah laku boleh diramal, tanpa penguncian kompleks
Caching: halaman dan data anda
Strateginya ialah cache-aside: permintaan pertama membaca daripada PostgreSQL dan menyimpan hasilnya dalam Redis dengan TTL (time to live); permintaan seterusnya mengambilnya terus daripada memori. Apabila anda menyunting halaman, kunci dinyahsahkan secara eksplisit — kami tidak pernah menghidangkan data lapuk melalui TTL buta.
Bagi laman pembentangan atau kedai, ini bermakna senarai produk, menu, halaman popular dan serpihan kandungan dihantar dari memori, tanpa membebankan pangkalan data. Pada waktu puncak (kempen, Black Friday) Redis menyerap permintaan berulang.
- Cache-aside dengan penyahsahihan eksplisit — tiada data lapuk
- Menyimpan cache serpihan halaman dan hasil pertanyaan, bukan sekadar halaman penuh
- Melindungi PostgreSQL pada waktu puncak trafik
Sesi, troli beli-belah dan perlindungan anti-penyalahgunaan
Sesi pengguna dan token penyegaran disimpan dalam Redis: pengesahan, tamat tempoh automatik melalui TTL dan pembatalan merentas semua peranti apabila seseorang log keluar atau menukar kata laluan.
Troli beli-belah dalam kedai yang dibina di 4buildsite disimpan dalam Redis untuk pelawat yang belum log masuk — dengan tamat tempoh, tanpa membengkakkan pangkalan data utama. Redis juga menguatkuasakan rate limiting pada borang hubungan dan log masuk, menggunakan sorted set, menghentikan spam dan percubaan brute-force sebelum sampai ke pangkalan data.
- Stor sesi dengan tamat tempoh automatik dan pembatalan token terpilih
- Troli berterusan dengan TTL untuk pelawat tanpa nama
- Rate limiting dan anti-penyalahgunaan pada borang dan pengesahan
Masa nyata dan baris gilir tugas latar belakang
Redis Pub/Sub dan Streams menggerakkan kemas kini masa nyata: stok berkurang secara langsung, pemberitahuan dalam aplikasi, status pesanan berubah — semuanya tanpa pelawat perlu memuat semula dan tanpa polling berulang yang meletihkan pelayan.
Tugas berat (memproses imej, menjana eksport, penyegerakan) masuk ke baris gilir Redis dan dijalankan oleh pekerja latar belakang, supaya pelawat tidak perlu menunggu tugas selesai. Mekanisme penguncian teragih menjamin operasi kritikal tidak dijalankan dua kali.
- Pub/Sub dan Streams untuk peristiwa langsung (stok, pesanan, pemberitahuan)
- Baris gilir tugas untuk pemprosesan berat yang dijalankan secara tak segerak
- Penguncian teragih untuk operasi yang tidak boleh dijalankan dua kali
Kelebihan dan kekurangan
Kelebihan
- Respons dari memori: data cache dihidangkan dari memori
- Mengurangkan beban PostgreSQL dengan ketara ketika trafik tinggi
- Struktur natif untuk sesi, troli, rate limiting dan papan pendahulu
- Pub/Sub dan Streams untuk ciri masa nyata, tanpa polling
- Baris gilir tugas untuk pemprosesan berat, tanpa menyekat pelawat
- Disertakan dan diurus oleh platform — tiada konfigurasi untuk anda
Had
- Data berada dalam RAM, yang lebih mahal daripada cakera → tidak sesuai untuk volum besar data "sejuk"
- Ia ialah lapisan cache / tambahan, bukan sumber kebenaran — data kekal berada dalam PostgreSQL
- Kegigihan (RDB/AOF) mengurangkan, tetapi tidak menghapuskan sepenuhnya, risiko kehilangan beberapa saat terakhir ketika ranap
- Memerlukan strategi penyahsahihan yang betul, jika tidak ia boleh menghidangkan data lapuk
Rumusan ringkas
Gunakan Redis untuk segala yang mesti serta-merta — caching, sesi, troli, rate limiting, masa nyata dan baris gilir tugas. Jangan gunakannya sebagai stor data utama; PostgreSQL kekal untuk itu. Di 4buildsite anda mendapat kedua-duanya, disambungkan secara automatik: anda tidak perlu memilih atau mengkonfigurasi apa-apa.
Jadual spesifikasi
| Keupayaan | Butiran | Di mana ia digunakan dalam builder |
|---|---|---|
| Kependaman | Rendah (dalam memori) | Halaman dan data daripada cache |
| Daya pemprosesan | Tinggi setiap nod, dalam memori | Trafik tinggi tanpa pangkalan data tersekat |
| Struktur data | string, hash, list, set, sorted set, stream | Sesi, troli, papan pendahulu, baris gilir, rate limiting |
| Kegigihan | Snapshot RDB + log AOF | Pemulihan selepas mula semula |
| Tamat tempoh | TTL bagi setiap kunci | Troli, sesi dan cache yang membersih sendiri |
| Masa nyata | Pub/Sub + Streams | Stok langsung, pemberitahuan, status pesanan |
Redis (cache) lwn pangkalan data sahaja
| Kriteria | Dengan Redis | PostgreSQL sahaja |
|---|---|---|
| Masa respons untuk data berulang | dari memori, kependaman rendah | lebih tinggi, satu pertanyaan pada setiap permintaan |
| Ketika trafik tinggi | pangkalan data dilindungi, mudah diskalakan | pangkalan data sesak, berisiko tamat masa |
| Troli dan sesi | dengan tamat tempoh automatik | jadual yang membesar dan membebankan pangkalan data |
| Masa nyata | Pub/Sub dan Streams natif | polling berulang, mahal |
| Baris gilir tugas | natif, mudah digunakan | penyelesaian ad hoc atau tiada |
Soalan lazim
Apakah Redis, secara ringkas?
Pangkalan data dalam memori, digunakan sebagai lapisan cache, sesi dan masa nyata di hadapan pangkalan data utama. Ia menjawab dari memori dan mengurangkan beban pada pangkalan data utama.
Mengapa tidak guna PostgreSQL sahaja?
PostgreSQL ialah sumber kebenaran (data tahan lama), tetapi Redis menghidangkan data berulang dari memori dan mengambil alih troli, sesi, rate limiting dan masa nyata, melindungi pangkalan data ketika trafik tinggi. Kedua-duanya bekerjasama.
Adakah saya kehilangan data jika Redis terhenti?
Bukan kandungan laman anda: data kekal berada dalam PostgreSQL. Redis hanya menyimpan cache dan data sementara, dan kegigihan RDB/AOF mengurangkan kehilangan.
Adakah saya perlu mengkonfigurasi Redis sendiri?
Tidak. Ia disertakan dan diurus oleh platform 4buildsite; anda mendapat ciri cache dan masa nyata tanpa mentadbir apa-apa.
Bagaimana Redis membantu kedai dalam talian?
Troli untuk pelawat, senarai produk dalam cache, stok yang dikemas kini secara langsung dan perlindungan anti-penyalahgunaan pada pembayaran dan borang — semuanya tanpa membebankan pangkalan data.
Adakah Redis membantu SEO dan Core Web Vitals?
Ya, secara tidak langsung: masa respons yang rendah memperbaik TTFB, yang mempengaruhi LCP, salah satu metrik Core Web Vitals, serta pengalaman pengguna.