Halaman ini menjelaskan cara mengonfigurasi dan memantau layanan memcache untuk aplikasi Anda menggunakan konsol Google Cloud. Panduan ini juga menjelaskan cara menggunakan API Python memcache App Engine untuk menetapkan dan mengambil nilai yang di-cache serta menggunakan fitur bandingkan dan atur untuk menangani permintaan tulis serentak ke kunci memcache yang sama. Untuk mempelajari lebih lanjut tentang memcache, baca Ringkasan Memcache.
Mengonfigurasi memcache
- Buka halaman Memcache di konsol Google Cloud.
Buka halaman Memcache Pilih tingkat layanan memcache yang ingin Anda gunakan:
- Bersama (default) - gratis dan menyediakan kapasitas cache berdasarkan upaya terbaik.
- Khusus - ditagih berdasarkan GB-jam ukuran cache dan menyediakan kapasitas cache tetap yang ditetapkan secara eksklusif untuk aplikasi Anda.
Pelajari lebih lanjut tentang class layanan yang tersedia di Ringkasan Memcache.
Menyimpan nilai ke cache dan mengambil nilai
Menyimpan nilai ke cache
Gunakan add()
untuk menambahkan nilai kunci jika dan hanya jika nilai tersebut belum ada, dengan
waktu habis masa berlaku opsional:
memcache.add(key="[KEY]", value="[VALUE]", time=[EXPIRATION_TIME])
Misalnya, untuk menambahkan nilai raining
ke kunci weather_USA_98105
dengan
waktu habis masa berlaku satu jam sejak nilai ditulis:
memcache.add(key="weather_USA_98105", value="raining", time=3600)
Pelajari lebih lanjut tentang add()
dan metode lainnya untuk menetapkan nilai lebih lanjut dalam dokumentasi
Python API
memcache.
Lihat contoh lain penyimpanan nilai dalam cache di Contoh Memcache.
Mencari nilai yang disimpan di cache
Gunakan get()
untuk mencari nilai dari satu kunci:
memcache.get(key="[KEY]")
Misalnya, untuk mendapatkan nilai kunci weather_USA_98105
:
memcache.get(key="weather_USA_98105")
Pelajari lebih lanjut get()
dan metode lainnya untuk mencari nilai dalam
dokumentasi memcache Python API.
Memantau memcache di konsol Google Cloud
- Buka halaman Memcache di konsol Google Cloud.
Buka halaman Memcache - Lihat laporan berikut:
- Tingkat layanan Memcache: Menunjukkan apakah aplikasi Anda menggunakan tingkat layanan Bersama atau Khusus. Jika Anda adalah pemilik project, Anda dapat beralih di antara keduanya. Pelajari tingkat layanan lebih lanjut.
- Rasio hit: Menampilkan persentase permintaan data yang disajikan dari cache, serta jumlah mentah permintaan data yang disajikan dari cache.
- Item dalam cache.
- Usia item terlama: Usia item terlama yang disimpan di cache. Perhatikan bahwa usia item akan di-reset setiap kali item digunakan, baik dibaca maupun ditulis.
- Total ukuran cache.
Anda dapat melakukan salah satu tindakan berikut:
- Kunci baru: Menambahkan kunci baru ke cache.
- Temukan kunci: Mengambil kunci yang ada.
- Kosongkan cache: Menghapus semua key-value pair dari cache.
(Hanya untuk memcache khusus) Lihat daftar Hotkey.
- "Hotkey" adalah kunci yang menerima lebih dari 100 kueri per detik (QPS) di memcache.
- Daftar ini berisi maksimal 100 hotkey, yang diurutkan berdasarkan QPS tertinggi.
Menangani penulisan serentak
Untuk menggunakan fitur bandingkan dan atur guna menangani penulisan dari beberapa permintaan ke kunci memcache yang sama:
- Buat instance objek
Client
memcache. - Gunakan loop percobaan ulang (sebaiknya dengan batasan jumlah percobaan ulang dan penggunaan
backoff eksponensial)
- Dalam loop percobaan ulang, dapatkan kunci menggunakan
gets()
atauget_multi()
dengan parameterfor_cas
yang disetel keTrue
. - Dalam loop percobaan ulang, perbarui nilai kunci menggunakan
cas()
ataucas_multi()
.
- Dalam loop percobaan ulang, dapatkan kunci menggunakan
Cuplikan berikut menunjukkan satu cara untuk menggunakan fitur bandingkan dan atur:
def bump_counter(key):
client = memcache.Client()
while True: # Retry loop
counter = client.gets(key)
if counter is None: raise KeyError('Uninitialized counter')
if client.cas(key, counter+1):
break
Loop percobaan ulang diperlukan karena tanpa loop, kode ini tidak benar-benar
menghindari kondisi race, tetapi hanya mendeteksinya! Layanan memcache menjamin
bahwa saat digunakan dalam pola yang ditampilkan di sini (yaitu, menggunakan gets()
dan cas()
),
jika dua (atau lebih) instance klien yang berbeda kebetulan terlibat dalam kondisi
race, hanya instance pertama yang menjalankan operasi cas()
yang berhasil (menampilkan
True
), sedangkan instance kedua (dan yang berikutnya) gagal (menampilkan False
).
Penajaman lainnya yang harus Anda tambahkan ke kode contoh ini adalah dengan menetapkan batasan jumlah percobaan ulang, guna menghindari loop tak terbatas dalam skenario terburuk saat ada banyak pertentangan untuk penghitung yang sama. Contoh kapan pertentangan tersebut dapat terjadi adalah jika ada lebih banyak permintaan yang mencoba memperbarui penghitung daripada layanan memcache yang dapat diproses secara real time.
Pelajari lebih lanjut tentang cara membandingkan dan mengatur di Ringkasan Memcache.
Langkah berikutnya
- Pelajari lebih lanjut tentang memcache di Ringkasan Memcache.
- Lihat contoh kode penggunaan memcache di Python di Contoh Memcache.