Popüler Redis depolama motoru, herhangi bir yazılım geliştiricisinin cephaneliğinde mükemmel ve olmazsa olmaz bir araçtır. Bellek içi depolama motoru, saniyede 32 milyona varan etkileyici bir sorgu ile son derece hızlı bir şekilde veri depolamaya ve alınmasına izin vererek, onu herhangi bir büyük veritabanı motorunun birincil tamamlayıcısı haline getirir.
Gelin ve çevrimiçi operasyonlarımızı nasıl hızlandıracağımızı öğrenelim.
Redis: Artıları ve Eksileri
Redis'in en büyük yararı, tamamen bellek içi bir veri deposu olmasıdır , yani veritabanı RAM içinde depolandığından son derece hızlıdır, dolayısıyla sabit sürücüye dosya G/Ç işlemleri gerekmez.
Diğer ek faydaları ise basitliği, Redis-cluster aracılığıyla kümeleme desteği ve size verilerinizi gerektiği gibi depolamak ve yönetmek için gereken esnekliği sağlayan sekiz farklı veri türü desteğidir.
Bununla birlikte, en büyük dezavantajı aynı zamanda tamamen bellek içi bir veri deposu olması ve dolayısıyla boyut sınırlamaları olmasıdır. Sunucu altyapınıza bağlıdır, ancak bu makale ve basitlik adına, tipik Redis veritabanınız yalnızca maksimum 2-4 GB veri tutacaktır.
Bu, Redis'in mySQL, PostgreSQL ve MongoDB gibi popüler olarak kullanılan veritabanı motorlarını tamamlamak için kullanıldığı ve onun yerine geçmediği anlamına gelir. Redis'in ana kullanımları arasında bir önbellek, kısa sürede sona erecek geçici/son veriler veya sık erişilen küçük veri parçaları bulunur.
Redis Nasıl Kurulur
Ubuntu veya apt-get komutunu içeren herhangi bir Linux dağıtımını çalıştırdığınızı varsayarsak , Redis'i yüklemek için terminalde aşağıdaki komutu çalıştırmanız yeterlidir:
sudo apt-get install redis-server
Ardından, Redis'in başarıyla yüklendiğinden emin olun. Terminal içinde şu komutu çalıştırın:
redis-cli --version
Bu, çalıştırdığınız Redis sürümünü yazdırmalıdır ve öyle varsayarak Redis'e bağlanmak için aşağıdaki komutu çalıştırın:
redis-cli
Bu size terminalde aşağıdaki gibi görünen standart olmayan bir Redis istemi verecektir:
127.0.0.1:6379>
Dize Komutları
Redis'e yapılan her giriş, istediğiniz herhangi bir boşluk olmayan dize olabilen bir anahtarla tanımlanır. Dizeler yalnızca tek bir değer içerir ve örneğin, birkaç anahtara bir değer ayarlamak için Redis isteminde aşağıdaki komutları çalıştırın.
127.0.0.1:6379> set full_name "John Doe" 127.0.0.1:6379> set units 5
Artık, keys komutuyla Redis veritabanında bulunan tüm anahtarları listeleyebilirsiniz.
127.0.0.1:6379> keys *
Bu, daha önce ayarladığınız iki anahtarın, tam_adı ve birimlerin görüntülenmesiyle sonuçlanacaktır . Get komutu ile bu tuşların değerini görebilirsiniz.
127.0.0.1:6379> get full_name "John Doe" 127.0.0.1:6379> get units 5
Del komutu ile anahtar silme işlemi kolaylıkla yapılabilir.
127.0.0.1:6379> del full_name
hincrby komutuyla bir tamsayıyı hızla artırmak da mümkündür . Aşağıdaki, "birimler" tuşunu 5'ten 7'ye artıracaktır.
127.0.0.1:6379> incrby units 2
Liste Komutları
Redis'teki listeler, belirli bir sıraya sahip tek boyutlu dizilerdir ve listenin farklı konumlarında yinelenen öğelere izin verir. Öğeler, lpush ve rpush komutlarıyla bir listenin soluna veya sağına eklenebilir .
127.0.0.1:6379> lpush colors blue 127.0.0.1:6379> rpush colors red yellow green
Yukarıdaki örnekte de görebileceğiniz gibi, tek bir komut içinde birden fazla öğeyi bir listeye gönderebilirsiniz. Artık lrange komutunu kullanarak listedeki tüm öğeleri görebiliriz .
127.0.0.1:6379> lrange colors 0 -1
Komutun sonunda iki tamsayı vardır, ilki listede başlayacak konumu tanımlayan ve ikincisi tüm öğeler anlamına gelen -1 ile döndürülecek öğelerin sayısıdır. Yukarıdaki komutun sonucu mavi, kırmızı, sarı, yeşil olacaktır .
Ayrıca lpop ve rpop komutlarını kullanarak listenin her iki ucundan da öğeleri kaldırabilirsiniz .
127.0.0.1:6379> lpop colors blue 127.0.0.1:6379> rpop colors green
Ayrıca llen komutuyla bir listedeki eleman sayısını da alabilirsiniz .
127.0.0.1:6379> llen colors (integer) 2
Son olarak, lrem komutuyla listeden bir öğeyi kaldırabilirsiniz .
127.0.0.1:6379> lrem colors 1 green (integer) 1
LRem komutu kaldırmak üzere bulunma numarası takip liste adınızla başlayan ve elemanın adı kaldırın. Bulunan ve listeden kaldırılan olayların sayısını döndürür.
Hash Komutları
Redis'teki en popüler veri türlerinden biri, birden çok anahtar/değer çiftini tek bir giriş içinde saklamanıza olanak tanıyan karmalardır. Anahtarın zaten var olması gerekmez ve anahtar/değer çiftlerini istediğiniz zaman hset komutuyla tanımlarsınız .
127.0.0.1:6379> hset user:581 full_name "Jane Doe" 127.0.0.1:6379> hset user:581 points 500
Ayrıca hmset komutunu kullanarak tek bir komut içinde bir karmanın birden çok anahtar/değer çiftini tanımlayabilirsiniz .
127.0.0.1:6379> hmset user:581 email [email protected] gender F
Anahtar kullanıcı:581 tarafından tanımlanan karma, artık tümü hgetall komutuyla kolayca alınabilen toplam dört anahtar/değer çiftine sahiptir .
127.0.0.1:6379> hgetall user:581 1) "full_name" 2) "Jane Doe" 3) "points" 4) "500" 5) "email" 6) "[email protected]" 7) "gender" 8) "F"
Ayrıca get komutunu kullanarak bir karma içindeki tek bir anahtar/değer çiftinin değerini de alabilirsiniz .
127.0.0.1:6379> hget user:581 email "[email protected]"
Karma içindeki herhangi bir tamsayı için, bunları code hincrby komutuyla belirli bir miktarda artırabilirsiniz .
127.0.0.1:6379> hincrby user:581 points 20 (integer) 520
Karma içindeki puan anahtarının değeri şimdi 20'den 520'ye artırıldı . Bir karma içindeki tek bir anahtar/değer çifti hdel komutuyla silinebilir .
127.0.0.1:6379> hdel user:581 gender
Alternatif olarak, del komutunu kullanarak tüm anahtar/değer çiftlerini içeren bir karmayı tamamen silebilirsiniz .
127.0.0.1:6379> del user:581
Süresi Dolan Redis Anahtarları
Redis'in bir başka mükemmel özelliği de, anahtarların süresinin dolma komutunu kullanarak belirli bir süre sonra anahtarları otomatik olarak sona erdirme yeteneğidir . Lütfen unutmayın, bir liste veya karma içindeki tekil öğeleri değil, yalnızca tam anahtarları sona erdirebilirsiniz. Örneğin:
127.0.0.1:6379> expire full_name 10
Bu , dizeler bölümünde oluşturduğunuz full_name anahtarında 10 saniyelik bir sona erme süresi belirleyecektir . Yukarıdaki komutu çalıştırdıktan sonra 10 saniye bekleyin ve ardından anahtarın değerini tekrar almayı deneyin.
127.0.0.1:6379> get full_name (nil)
Beklendiği gibi, anahtarın süresi doldu, bu nedenle sonuç olarak boş oluyoruz.
PHP ile Redis'e Bağlan
Artık Redis ile verilerin nasıl saklanacağının ve alınacağının temellerini öğrendiğinize göre, şimdi onu yazılımınıza bağlamanın zamanı geldi. Tüm programlama dillerinin Redis için modülleri/uzantıları vardır, ancak bu örnek için PHP kullanacağız.
Varsayılan olarak yüklenmediğinden önce PHP-Redis uzantısını yüklemelisiniz. Terminal içinde komutu çalıştırın.
sudo apt-get install php-redis
Yüklendikten sonra, uzantının doğru şekilde yüklenmesi için PHP-fpm'yi yeniden başlattığınızdan emin olun. İşte Redis'e bağlanan ve onunla arayüz oluşturan bazı PHP kodları.
<> // Connect to redis $conn = new redis(); try { $conn->connect('127.0.0.1', 6379, 5); } catch (RedisException $e) { die("Unable to connect to redis"); } // Set string $conn->set('country', 'Canada'); // Get string $value = $conn->get('country'); echo "Country is: $value "; // Define a profile $profile = [ 'username' => 'mike', 'full_name' => 'Mike Smith', 'email' => '[email protected]', 'country' => 'Australia' ]; // Create a hash $conn->hmset('user:188', $profile); // Get all values of the profile hash $values = $conn->hgetall('user:188'); print_r($values); // Get only the e-mail address $email = $conn->hget('user:188', 'email'); echo "E-mail is: $email "; // Expire the hash in 15 seconds $conn->expire('user:188', 15);
Yukarıdaki örnek kod oldukça yalındır olmalıdır. Önce 5 saniyelik bir zaman aşımı ile Redis'e bağlanır, ardından bir string ve hash ayarlayıp almaya devam eder. Tüm Redis komutları, yukarıda örneklendiği gibi doğrudan Redis nesnesinden çağrılarak OOP aracılığıyla gerçekleştirilebilir .
Kendi Yolundasın!
Tebrikler, PHP kullanarak Redis'e nasıl bağlanacağınız ve onunla nasıl arayüz kuracağınız da dahil olmak üzere, Redis depolama motoru aracılığıyla inanılmaz bir hızla veri depolamanın ve almanın temellerini öğrendiniz.
Lütfen bu makalenin yalnızca en temel bilgileri kapsadığını ve belgelerin Redis Veri Türleri sayfasının Redis'i ve tüm işlevlerini keşfetmeye devam etmek için harika bir yer olduğunu unutmayın.