Analiza performansi Redisa u radu sa PHP bibliotekama

Php Redis

Opšte je poznato da je PHP malo sporiji jezik za komunikaciju sa Redisom ukoliko ga uporedimo sa jezicima kao što je Rubby ili Java. Cilj ovog posta je da pokažemo kako se ponašaju različite PHP biblioteke u radu sa Redisom, kakva je brzina izvršenja i kolika je potrošnja memorije. PHP Redis klijenti koji će biti analizirani su

  1. PHPRedis – Napisan je u C jeziku i instalira se kao ekstenzija u PHP. Najbolje uputsvo za instalaciju možete pronaći ovde. Pre testiranja bio sam ubedjen da će se pokazati kao najbolji u svim testovima. Ima odličnu dokumentaciju (za svaku funkciju)  i ukoliko znate komande Redis servera znaćete da koristite i funkcije PHPRedisa.

  2. Predis  – Najkompletniji i najbolje napisan klijent gledajući ga iz programerskog ugla. U potpunosti je napisan u skladu sa OOP principom. Zahteva minimum PHP 5.3.2 . Kod je u skladu sa PSR-0 standardom te se može koristiti autoloading a može se instalirati preko Composer-a. Što se tiče dokumentacije mogli bise ugledati na PHPRedis budući da im je ovo slabija strana. Aktivno se razvija. U testovima nisam uspeo da pustim više od 86000 ključeva u transakcionom (pipeline) režimu.

  3. Rediska –  Pregledajući postojeće testove imao sam određene predrasude prema ovom klijentu. Ispostavilo se da testovi koji su navodili da ovaj klijent ne završava transakcije nisu primetili da Rediska ne može da podržava u transakcijama više od 18000 ključeva kod hasheva i više od 22000 ključeva ( na računaru na kom sam testirao što ne znači da će na nekom drugom biti ista ograničenja) kod ostalih struktura što jeste nekavrsta ograničenja ukoliko vam to u praksi zaista i treba. Sveopšti utisak je da je Rediška solidan PHP Redis klijent. Rediska, kao i Predis, predstavlja grupu klasa. Ima dobru dokumenaciju (uključujući detaljna uputstva kako ga integrisati sa Zend i Symphony frejmvorcima ali bi mogli da je dorade u određenim segmentima (pipeline). Poslednja verzija Rediske, u trenutku pisanja ovog posta, datira od 02.04.2011. godine te se ne može reći da se aktivno razvija.

  4. Redisent – Jednostavan Redis klijent koji se sastoji od samo jednog fajla. Jednostavan je za korišćenje i može se naći kao default klijent u PHP framework-cima kao što su FuelPHP i Laravel. Intuitivan je za korišćenje tj metode su iste kao na samom Redisu.

  5. RedisServer – Takođe jednostavan klijent i dosta sličan Redisentu. Izuzetno je lagan za korišćenje.

Read More