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.