Izbriši sve u Redisu

1. Pregled

Prilikom predmemoriranja u Redisu može biti korisno očistiti cijelu predmemoriju kada postane nevaljana.

U ovom kratkom vodiču naučit ćemo kako izbrisati sve ključeve prisutne u Redisu, kako u određenim bazama podataka tako i u svim bazama podataka.

Prvo ćemo pogledati naredbeni redak. Zatim ćemo vidjeti kako postići istu stvar pomoću API-ja i Java klijenta.

2. Trčanje Redisa

Trebat će nam instalacija Redisa za rad. U brzom startu Redis nalaze se upute za instalaciju za Mac i Linux. Vjerojatno je lakše pokrenuti Redis u dockeru.

Pokrenimo testni Redis poslužitelj:

izvršavanje dockera --ime redis -p 6379: 6379 -d redis: najnovije

I, možemo trčati redis-cli da testiramo da li ovaj poslužitelj radi:

docker exec -it redis redis-cli

Ovo nas spušta u cli ljusku, gdje je naredba ping će testirati radi li poslužitelj:

127.0.0.1:6379> ping PONG

Izlazimo iz redis-cli sa CTRL + C.

3. Redis naredbe

Počnimo s naredbama Redis za brisanje svega.

Dvije su glavne naredbe za brisanje tipki prisutnih u Redisu: FLUSHDB i FLUSHALL. Za izvršavanje ovih naredbi možemo koristiti Redis CLI.

The FLUSHDB naredba briše ključeve u bazi podataka. I FLUSHALL naredba briše sve ključeve u svim bazama podataka.

Te operacije možemo izvršiti u pozadinskoj niti pomoću ASINKCIJA opcija. Ovo je korisno ako ispiranje traje dugo kao izvršavanje naredbe ASINKCIJA zaustavlja blokiranje dok ne završi.

Trebali bismo primijetiti da ASINKCIJA opcija je dostupna u Redisu 4.0.0.

4. Rad s Java klijentom

Pogledajmo sada kako koristiti Jedis Java klijent za brisanje ključeva.

4.1. Ovisnosti

Prvo ćemo morati dodati ovisnost Mavena za Jedije:

 redis.klijenti jedis 3.3.0 

Da bismo olakšali testiranje, upotrijebimo i ugrađeni Redis poslužitelj:

 com.github.kstyrc embedded-redis 0,6 

4.2. Pokretanje ugrađenog Redisa

Stvorit ćemo ugrađeni Redis poslužitelj za testiranje, pokretanjem na dostupnom priključku:

RedisService redisServer = novi RedisServer (port);

Tada se kreira naš klijent Jedis lokalnihost kao ime hosta i isti port:

Jedi jedis = novi Jedi ("localhost", luka);

5. Ispiranje jedne baze podataka

Stavimo neke podatke u bazu podataka i provjerimo je li upamćen:

String key = "ključ"; Vrijednost niza = "vrijednost"; jedis.set (ključ, vrijednost); Niz je primljen = jedis.get (ključ); assertEquals (vrijednost, primljena);

Ajmo sad isprati bazu podataka pomoću flushDB metoda:

jedis.flushDB (); assertNull (jedis.get (ključ));

Kao što možemo vidjeti, pokušaj dohvaćanja vrijednosti nakon ispiranja vraća se null.

6. Brisanje svih baza podataka

Redis pruža više baza podataka koje su numerirane. Podatke možemo dodavati u različite baze podataka pomoću Odaberi naredba prije nego što dodamo svoje vrijednosti:

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

Sada bismo trebali imati po jedan ključ u svakoj od naše dvije baze podataka:

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 metoda će očistiti samo trenutnu bazu podataka. Da bismo očistili sve baze podataka, koristimo ispratiSve metoda:

jedis.flushAll ();

Možemo provjeriti je li ovo uspjelo:

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

7. Složenost vremena

Redis je brza pohrana podataka koja se dobro skalira. Međutim, ispiranje može potrajati dulje kad ima više podataka.

Vremenska složenost FLUSHDB operacija je NA), gdje N je broj ključeva u bazi podataka. Ako koristimo FLUSHALL naredba, vremenska složenost je opet NA), ali ovdje, N je broj tipki u svim bazama podataka.

8. Zaključak

U ovom smo članku vidjeli kako pokrenuti Redis i redis-cli u Dockeru i kako koristiti Jedis klijent za Javu s ugrađenim Redis poslužiteljem.

Vidjeli smo kako čuvati podatke u različitim Redisovim bazama podataka i kako koristiti naredbe za ispiranje za brisanje jedne ili više njih.

Kao i uvijek, izvorni kod za ovaj članak dostupan je na GitHubu.