Aplikasi web berperforma tinggi yang skalabel sering menggunakan cache data dalam memori yang terdistribusi di depan atau sebagai pengganti penyimpanan persisten yang kuat untuk beberapa tugas. Sebaiknya gunakan Memorystore for Redis sebagai layanan penyimpanan data ke dalam cache. Perlu diketahui bahwa Memorystore for Redis tidak menyediakan paket gratis. Lihat Harga Memorystore untuk mengetahui detail selengkapnya.
Sebelum memulai, pastikan aplikasi Anda tidak melebihi kuota Memorystore for Redis.
Waktu penggunaan cache memori
Data sesi, preferensi pengguna, dan data lain yang ditampilkan oleh kueri untuk halaman web adalah pilihan yang baik untuk disimpan ke dalam cache. Secara umum, jika kueri yang sering dijalankan menampilkan serangkaian hasil yang tidak harus segera muncul di aplikasi, Anda dapat menyimpan hasilnya ke dalam cache. Permintaan berikutnya dapat memeriksa cache dan hanya membuat kueri database jika hasilnya tidak ada atau sudah tidak berlaku.
Jika Anda hanya menyimpan nilai di Memorystore tanpa mencadangkannya di penyimpanan persisten, pastikan aplikasi Anda memiliki perilaku yang dapat diterima jika nilainya sudah tidak berlaku dan dihapus dari cache. Misalnya, sesi akan gagal berfungsi jika secara tiba-tiba data sesi pengguna tidak tersedia. Oleh karena itu, data tersebut mungkin harus disimpan dalam database selain Memorystore.
Memahami izin Memorystore
Setiap interaksi dengan layanan Google Cloud perlu diotorisasi. Misalnya, untuk berinteraksi dengan database Redis yang dihosting oleh Memorystore, aplikasi Anda harus menyediakan kredensial akun yang memiliki otorisasi untuk mengakses Memorystore.
Secara default, aplikasi Anda akan memberikan kredensial akun layanan default App Engine, yang memiliki otorisasi untuk mengakses database dalam project yang sama dengan aplikasi Anda.
Jika salah satu kondisi berikut terpenuhi, Anda harus menggunakan teknik autentikasi alternatif yang secara eksplisit memberikan kredensial:
Aplikasi Anda dan database Memorystore berada di project Google Cloud yang berbeda.
Anda telah mengubah peran yang ditetapkan ke akun layanan App Engine default.
Untuk mengetahui informasi tentang teknik autentikasi alternatif, lihat Menyiapkan Autentikasi untuk Aplikasi Produksi Server ke Server.
Ringkasan penggunaan Memorystore
Untuk menggunakan Memorystore di aplikasi Anda:
Siapkan Memorystore for Redis, yang mengharuskan Anda untuk membuat instance Redis pada Memorystore dan membuat Akses VPC Serverless yang digunakan aplikasi Anda untuk berkomunikasi dengan instance Redis.
Instal library klien untuk Redis dan gunakan perintah Redis untuk menyimpan data ke dalam cache.
Memorystore for Redis kompatibel dengan library klien apa pun untuk Redis.
Go
Panduan ini menjelaskan penggunaan library klien redigo untuk mengirim perintah Redis dari aplikasi Anda.
Java
Panduan ini menjelaskan penggunaan library klien Jedis untuk mengirim perintah Redis dari aplikasi Anda. Untuk mengetahui detail selengkapnya tentang cara menggunakan Jedis, lihat wiki Jedis.
Node.js
Panduan ini menjelaskan penggunaan library klien node_redis untuk mengirim perintah Redis dari aplikasi Anda.
PHP
Panduan ini menjelaskan penggunaan library klien PHPRedis untuk mengirim perintah Redis dari aplikasi Anda.
Python
Panduan ini menjelaskan penggunaan library klien redis-py 3.0 untuk mengirim perintah Redis dari aplikasi Anda.
Ruby
Panduan ini menjelaskan penggunaan library klien redis-rb untuk mengirim perintah Redis dari aplikasi Anda.
Menyiapkan Memorystore for Redis
Untuk menyiapkan Memorystore for Redis:
Buat instance Redis di Memorystore.
Saat diminta memilih region untuk instance Redis, pilih region yang sama dengan lokasi aplikasi App Engine Anda berada.
Catat alamat IP dan nomor port instance Redis yang Anda buat. Anda akan menggunakan informasi ini saat membuat klien Redis dalam kode.
Hubungkan App Engine Anda ke jaringan VPC. Aplikasi Anda hanya dapat berkomunikasi dengan Memorystore melalui konektor VPC.
Pastikan untuk menambahkan informasi koneksi VPC ke file
app.yaml
Anda, seperti yang dijelaskan dalam Mengonfigurasi aplikasi menggunakan konektor.
Menginstal dependensi
Go
Agar library klien redigo tersedia untuk aplikasi Anda saat dijalankan di App Engine, tambahkan library ke dependensi aplikasi Anda. Misalnya, jika Anda menggunakan file go.mod
untuk mendeklarasikan dependensi, tambahkan baris berikut ke file go.mod
Anda:
modul github.com/GoogleCloudPlatform/golang-samples/tree/master/memorystore/redis
Pelajari lebih lanjut cara menentukan dependensi untuk aplikasi Go Anda.
Java
Agar library klien Jedis tersedia untuk aplikasi Anda saat dijalankan
di App Engine, tambahkan library ke dependensi aplikasi Anda. Misalnya,
jika Anda menggunakan Maven, tambahkan dependensi berikut di file pom.xml
Anda:
Node.js
Agar library klien node_redis tersedia untuk aplikasi Anda saat dijalankan
di App Engine, tambahkan library ke file package.json
aplikasi Anda.
Contoh:
Pelajari lebih lanjut cara menentukan dependensi untuk aplikasi Node.js.
PHP
Agar library klien PHPRedis tersedia untuk aplikasi Anda saat dijalankan di App Engine, tambahkan ekstensi redis.so
ke file php.ini
aplikasi Anda.
Contoh:
Untuk informasi selengkapnya tentang cara mengaktifkan ekstensi PHP di App Engine, lihat Ekstensi yang dapat dimuat secara dinamis.
Python
Agar library klien redis-py tersedia untuk aplikasi Anda saat dijalankan
di App Engine, tambahkan baris berikut ke file
requirements.txt
aplikasi:
redis
Runtime App Engine Python 3 akan otomatis mengupload semua library
file requirements.txt
aplikasi Anda saat
men-deploy aplikasi.
Untuk pengembangan lokal, sebaiknya instal dependensi di lingkungan virtual seperti venv.
Ruby
Agar library klien redis-rb tersedia untuk aplikasi Anda saat berjalan
di App Engine, tambahkan library ke file Gemfile
aplikasi Anda.
source "https://cloud.google.com/memorystore"
gem "redis-rb"
Membuat klien Redis
Untuk berinteraksi dengan database Redis, kode Anda perlu membuat klien Redis untuk mengelola koneksi ke database Redis. Bagian berikut menjelaskan pembuatan klien Redis menggunakan library klien Redis.
Menentukan variabel lingkungan
Library klien Redis menggunakan dua variabel lingkungan untuk menyusun URL database Redis Anda:
- Variabel untuk mengidentifikasi alamat IP database Redis yang Anda buat di Memorystore.
- Variabel untuk mengidentifikasi nomor port database Redis yang Anda buat di Memorystore.
Sebaiknya tentukan variabel ini dalam file app.yaml
aplikasi, bukan menentukannya secara langsung di dalam kode. Cara ini memudahkan Anda untuk menjalankan aplikasi di
lingkungan yang berbeda, seperti lingkungan lokal dan App Engine. Pelajari variabel lingkungan lebih lanjut di halaman referensi app.yaml
.
Go
Misalnya, tambahkan baris berikut ke file app.yaml
Anda:
env_variables:
REDISHOST: '10.112.12.112'
REDISPORT: '6379'
Java
Misalnya, tambahkan baris berikut ke file app.yaml
Anda:
env_variables:
redis.host: '10.112.12.112'
redis.port: '6379'
Node.js
Misalnya, tambahkan baris berikut ke file app.yaml
Anda:
env_variables:
REDISHOST: '10.112.12.112'
REDISPORT: '6379'
PHP
Misalnya, tambahkan baris berikut ke file app.yaml
Anda:
env_variables:
REDIS_HOST: '10.112.12.112'
REDIS_PORT: '6379'
Python
Misalnya, tambahkan baris berikut ke file app.yaml
Anda:
env_variables:
REDISHOST: '10.112.12.112'
REDISPORT: '6379'
Ruby
Misalnya, tambahkan baris berikut ke file app.yaml
Anda:
env_variables:
REDISHOST: '10.112.12.112'
REDISPORT: '6379'
Mengimpor Redis dan membuat klien
Go
Setelah Anda menentukan variabel lingkungan REDISHOST
dan REDISPORT
, gunakan baris berikut untuk mengimpor library redigo, membuat kumpulan koneksi, lalu mengambil klien Redis dari kumpulan tersebut:
Java
Saat menggunakan library Jedis, sebaiknya buat
JedisPool, lalu gunakan kumpulan tersebut untuk membuat klien.
Baris kode berikut menggunakan variabel lingkungan redis.host
dan redis.port
yang Anda tentukan sebelumnya untuk membuat kumpulan:
Untuk membuat klien dari kumpulan tersebut, gunakan metode JedisPool.getResource()
.
Contoh:
Node.js
Setelah menentukan variabel lingkungan REDISHOST
dan REDISPORT
,
Anda dapat menggunakan baris berikut untuk mengimpor library node_redis dan
membuat klien Redis:
PHP
Setelah menentukan variabel lingkungan REDIS_HOST
dan REDIS_PORT
,
Anda dapat menggunakan baris berikut untuk membuat klien Redis:
Python
Setelah Anda menentukan variabel lingkungan REDISHOST
dan REDISPORT
,
gunakan baris berikut untuk mengimpor library redis-py dan
membuat klien:
import redis
redis_host = os.environ.get('REDISHOST', 'localhost')
redis_port = int(os.environ.get('REDISPORT', 6379))
redis_client = redis.Redis(host=redis_host, port=redis_port)
Jika menggunakan versi lama redis-py untuk aplikasi lain, Anda mungkin menggunakan
class StrictClient
, bukan Client
. Namun, redis-py sekarang merekomendasikan Client
, bukan StrictClient
.
Ruby
Tidak ada informasi tambahan untuk runtime ini.
Menggunakan perintah Redis untuk menyimpan dan mengambil data dalam cache
Meskipun database Memorystore Redis mendukung sebagian besar perintah Redis, Anda hanya perlu menggunakan beberapa perintah untuk menyimpan dan mengambil data dari cache. Tabel berikut menampilkan rekomendasi perintah Redis yang dapat Anda gunakan untuk menyimpan data ke dalam cache. Untuk mengetahui cara memanggil perintah tersebut dari aplikasi Anda, lihat dokumentasi library klien.
Tugas | Perintah Redis |
---|---|
Buat entri dalam cache data dan tetapkan waktu habis masa berlaku untuk entri |
SETNX MSETNX |
Mengambil data dari cache | GET MGET |
Mengganti nilai cache yang ada | SETEL MSET |
Menambahkan atau mengurangi nilai cache numerik | INCR INCRBY DECR DECRBY |
Menghapus entri dari cache | DEL UNLINK |
Mendukung interaksi serentak dengan cache | Lihat detail tentang transaksi Redis.
Untuk Python 3, library klien redis-py mengharuskan semua transaksi terjadi di pipeline. |
Menguji update Anda
Saat Anda menguji aplikasi secara lokal, pertimbangkan untuk menjalankan instance lokal Redis gun menghindari interaksi dengan data produksi (Memorystore tidak menyediakan emulator). Untuk menginstal dan menjalankan Redis secara lokal, ikuti petunjuk dalam dokumentasi Redis. Perhatikan bahwa saat ini menjalankan Redis secara lokal di Windows tidak dapat dilakukan.
Untuk mengetahui informasi selengkapnya tentang pengujian aplikasi, lihat Menguji dan men-deploy aplikasi Anda.
Men-deploy aplikasi Anda
Setelah aplikasi Anda berjalan di server pengembangan lokal tanpa error:
Jika aplikasi berjalan tanpa error, gunakan pemisahan traffic untuk meningkatkan traffic untuk aplikasi yang diupdate secara perlahan. Pantau aplikasi dengan cermat untuk menemukan masalah database sebelum mengarahkan lebih banyak traffic ke aplikasi yang telah diupdate.