Padamkan Semua yang ada di Redis

1. Gambaran keseluruhan

Semasa membuat cache di Redis, berguna untuk membersihkan keseluruhan cache apabila menjadi tidak sah.

Dalam tutorial ringkas ini, kita akan belajar bagaimana menghapus semua kunci yang ada di Redis, baik di pangkalan data tertentu dan di semua pangkalan data.

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

2. Berlari Redis

Kami memerlukan pemasangan Redis untuk bekerjasama. Terdapat arahan pemasangan untuk Mac dan Linux pada mulakan Redis. Mungkin lebih mudah untuk menjalankan Redis di docker.

Mari mulakan ujian pelayan Redis:

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

Dan, kita boleh menjalankan redis-cli untuk menguji bahawa pelayan ini berfungsi:

docker exec -it redis redis-cli

Ini menjatuhkan kita ke shell cli, di mana arahan ping akan menguji sama ada pelayan aktif:

127.0.0.1:6379> ping PONG

Kami keluar dari redis-cli dengan CTRL + C.

3. Redis Perintah

Mari kita mulakan dengan arahan Redis untuk memadamkan semuanya.

Terdapat dua arahan utama untuk menghapus kekunci yang terdapat di Redis: FLUSHDB dan FLUSHALL . Kita dapat menggunakan Redis CLI untuk melaksanakan perintah ini.

The FLUSHDB arahan memadam kunci dalam pangkalan data. Dan arahan FLUSHALL menghapus semua kunci dalam semua pangkalan data.

Kita boleh menjalankan operasi ini di latar belakang menggunakan pilihan ASYNC . Ini berguna jika pembilasan memerlukan masa yang lama, kerana membuat perintah ASYNC menghentikannya dari menyekat sehingga selesai.

Kita harus perhatikan bahawa pilihan ASYNC tersedia dari Redis 4.0.0.

4. Bekerja dengan Pelanggan Java

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

4.1. Kebergantungan

Pertama, kita perlu menambahkan kebergantungan Maven untuk Jedis:

 redis.clients jedis 3.3.0 

Untuk mempermudah pengujian, mari kita juga menggunakan pelayan Redis yang tersemat:

 com.github.kstyrc embedded-redis 0.6 

4.2. Memulakan Redis Terbenam

Kami akan membuat pelayan Redis tertanam untuk diuji, dengan menjalankannya di port yang tersedia:

RedisService redisServer = new RedisServer(port);

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

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

5. Mengeluarkan Pangkalan Data Tunggal

Mari masukkan beberapa data ke dalam pangkalan data dan pastikan ia diingat:

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

Sekarang mari kita buka pangkalan data menggunakan kaedah flushDB :

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

Seperti yang kita lihat, percubaan untuk mendapatkan semula nilai setelah pembilasan kembali menjadi nol .

6. Kosongkan Semua Pangkalan Data

Redis menyediakan pelbagai pangkalan data, yang diberi nombor. Kita dapat menambahkan data ke pangkalan data yang berbeza dengan menggunakan perintah pilih sebelum kita menambah nilai kita:

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

Kita sekarang harus mempunyai satu kunci dalam setiap dua pangkalan data 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 kaedah hanya akan membersihkan pangkalan data semasa . Untuk membersihkan semua pangkalan data, kami menggunakan kaedah flushAll :

jedis.flushAll();

Kami dapat menguji bahawa ini berjaya:

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

7. Kerumitan Masa

Redis adalah kedai data pantas yang menimbang dengan baik. Walau bagaimanapun, operasi pembilasan boleh memakan masa lebih lama apabila terdapat lebih banyak data.

Kerumitan masa operasi FLUSHDB adalah O (N) , di mana N adalah bilangan kunci dalam pangkalan data. Sekiranya kita menggunakan perintah FLUSHALL , kerumitan waktu sekali lagi adalah O (N) , tetapi di sini, N adalah bilangan kunci di semua pangkalan data.

8. Kesimpulannya

Dalam artikel ini, kami melihat bagaimana menjalankan Redis dan redis-cli di Docker, dan bagaimana menggunakan klien Jedis untuk Java dengan pelayan Redis yang tersemat.

Kami melihat bagaimana menyimpan data dalam pangkalan data Redis yang berbeza dan bagaimana menggunakan perintah siram untuk membersihkan satu atau lebih daripadanya.

Seperti biasa, kod sumber untuk artikel ini terdapat di GitHub.