Hapus Semua yang ada di Redis

1. Ikhtisar

Saat menyimpan dalam cache di Redis, akan berguna untuk menghapus seluruh cache saat cache menjadi tidak valid.

Dalam tutorial singkat ini, kita akan belajar cara menghapus semua kunci yang ada di Redis, baik di database tertentu dan di semua database.

Pertama, kita akan melihat baris perintah. Kemudian, kita akan melihat bagaimana mencapai hal yang sama menggunakan API dan klien Java.

2. Menjalankan Redis

Kami memerlukan instalasi Redis untuk digunakan. Ada petunjuk penginstalan untuk Mac dan Linux di panduan mulai cepat Redis. Mungkin lebih mudah menjalankan Redis di buruh pelabuhan.

Mari kita mulai menguji server Redis:

docker run --name redis -p 6379:6379 -d redis:latest

Dan, kita dapat menjalankan redis-cli untuk menguji apakah server ini berfungsi:

docker exec -it redis redis-cli

Ini membawa kita ke shell cli, di mana perintah ping akan menguji apakah server sudah aktif:

127.0.0.1:6379> ping PONG

Kami keluar dari redis-cli dengan CTRL + C.

3. Perintah Redis

Mari kita mulai dengan perintah Redis untuk menghapus semuanya.

Ada dua perintah utama untuk menghapus kunci yang ada di Redis: FLUSHDB dan FLUSHALL . Kita dapat menggunakan CLI Redis untuk menjalankan perintah ini.

The FLUSHDB perintah menghapus kunci dalam database. Dan perintah FLUSHALL menghapus semua kunci di semua database.

Kami dapat menjalankan operasi ini di thread latar belakang menggunakan opsi ASYNC . Ini berguna jika pembilasan membutuhkan waktu lama, karena membuat perintah ASYNC menghentikan pemblokiran hingga selesai.

Kami harus mencatat bahwa opsi ASYNC tersedia dari Redis 4.0.0.

4. Bekerja dengan Klien Java

Sekarang, mari kita lihat bagaimana menggunakan klien Java Jedis untuk menghapus kunci.

4.1. Dependensi

Pertama, kita perlu menambahkan dependensi Maven untuk Jedis:

 redis.clients jedis 3.3.0 

Untuk mempermudah pengujian, mari gunakan juga server Redis tertanam:

 com.github.kstyrc embedded-redis 0.6 

4.2. Memulai Redis Tersemat

Kami akan membuat server Redis tertanam untuk diuji, dengan menjalankannya pada port yang tersedia:

RedisService redisServer = new RedisServer(port);

Klien Jedis kami kemudian dibuat dengan localhost sebagai nama host, dan port yang sama:

Jedis jedis = new Jedis("localhost", port);

5. Membilas Database Tunggal

Mari masukkan beberapa data ke dalam database dan periksa apakah sudah diingat:

String key = "key"; String value = "value"; jedis.set(key, value); String received = jedis.get(key); assertEquals(value, received);

Sekarang mari kita bersihkan database menggunakan metode flushDB :

jedis.flushDB(); assertNull(jedis.get(key));

Seperti yang bisa kita lihat, mencoba mengambil nilai setelah pembilasan mengembalikan null .

6. Menghapus Semua Database

Redis menyediakan banyak database, yang diberi nomor. Kita dapat menambahkan data ke database yang berbeda dengan menggunakan perintah select sebelum kita menambahkan nilai kita:

jedis.select(0); jedis.set("key1", "value1"); jedis.select(1); jedis.set("key2", "value2");

Kami sekarang harus memiliki satu kunci di masing-masing dari dua database kami:

jedis.select(0); assertEquals("value1", jedis.get("key1")); assertNull(jedis.get("key2")); jedis.select(1); assertEquals("value2", jedis.get("key2")); assertNull(jedis.get("key1"));

The flushDB metode hanya akan menghapus database saat ini . Untuk menghapus semua database, kami menggunakan metode flushAll :

jedis.flushAll();

Kami dapat menguji apakah ini berhasil:

jedis.select(0); assertNull(jedis.get("key1")); assertNull(jedis.get("key2")); jedis.select(1); assertNull(jedis.get("key1")); assertNull(jedis.get("key2"));

7. Kompleksitas Waktu

Redis adalah penyimpanan data cepat yang berskala baik. Namun, operasi pembilasan bisa memakan waktu lebih lama jika ada lebih banyak data.

Kompleksitas waktu dari operasi FLUSHDB adalah O (N) , dimana N adalah jumlah kunci dalam database. Jika kita menggunakan perintah FLUSHALL , kompleksitas waktu lagi-lagi O (N) , tetapi di sini, N adalah jumlah kunci di semua database.

8. Kesimpulan

Di artikel ini, kami melihat cara menjalankan Redis dan redis-cli di Docker, dan cara menggunakan klien Jedis untuk Java dengan server Redis tertanam.

Kami melihat cara menyimpan data dalam database Redis yang berbeda dan cara menggunakan perintah flush untuk menghapus satu atau beberapa database.

Seperti biasa, kode sumber untuk artikel ini tersedia di GitHub.