Redis, değerlere işaret eden tuşları saklar. Anahtarlar makul bir boyuta kadar herhangi bir ikili değer olabilir (okunabilirlik ve hata ayıklama amacıyla kısa ASCII dizeleri kullanılması önerilir). Değerler, beş yerel Redis veri türünden biridir.
1. dizeler - 512 MB'a kadar ikili güvenli bayt dizisi
2.hashes - anahtar değer çiftlerinin bir koleksiyonu
3.lists - ekleme sıralı bir dize koleksiyonu
4.sets - sipariş vermeyen benzersiz dizelerden oluşan bir koleksiyon
5. sıralı setler - kullanıcı tanımlı puanlama tarafından sıralanan benzersiz dizelerden oluşan bir koleksiyon
Teller
Bir Redis dizesi bir bayt dizisidir.
Redis'teki dizeler ikili güvenlidir (yani, herhangi bir özel sonlandırma karakteri tarafından belirlenmeyen bilinen bir uzunluğa sahip oldukları anlamına gelir), bu nedenle bir dizede 512 megabayta kadar herhangi bir şey saklayabilirsiniz.
Dizeler, kanonik "anahtar değer deposu" konseptidir. Bir değere işaret eden bir anahtarınız vardır; burada hem anahtar hem de değer metin veya ikili dizelerdir.
Dizelerle ilgili tüm olası işlemler için http://redis.io/commands/#string adresine bakın.
Hash'ler
Bir Redis karması, anahtar / değer çiftlerinin bir koleksiyonudur.
Bir Redis karması, her anahtar ve değerin bir dize olduğu birçok anahtar değer çifti içerir. Redis karmaları, karmaşık değerleri doğrudan desteklemez (yani, karma alanının bir liste veya küme veya başka bir karma değerine sahip olamazsınız), ancak diğer üst düzey karmaşık değerlere işaret etmek için karma alanlarını kullanabilirsiniz. Karma alan değerleri üzerinde yapabileceğiniz tek özel işlem, sayısal içeriğin atomik artışı / azalmasıdır.
Bir Redis karmasını iki şekilde düşünebilirsiniz: doğrudan nesne temsili ve birçok küçük değeri kompakt bir şekilde saklamanın bir yolu olarak.
Doğrudan nesne gösterimlerinin anlaşılması kolaydır. Nesnelerin bir adı (karma anahtarı) ve değerleri olan dahili anahtarlar koleksiyonu vardır. Bir örnek için aşağıdaki örneğe bakın.
Bir karma kullanarak birçok küçük değeri depolamak akıllı Redis büyük veri depolama tekniğidir. Bir karma az sayıda alana (~ 100) sahip olduğunda, Redis tüm karma'nın depolama ve erişim etkinliğini optimize eder. Redis'in küçük karma depolama optimizasyonu ilginç bir davranış yaratır: dize değerlerini gösteren 10.000 üst düzey tuşa sahip olmak yerine her biri 100 dahili anahtar ve değer içeren 100 karma yapmak daha etkilidir. Veri depolama alanınızı bu şekilde optimize etmek için Redis karmalarını kullanmak, verilerin nerede bittiğini izlemek için ek programlama yükü gerektirir, ancak veri depolama alanınız temelde dize tabanlıysa, bu garip hileyi kullanarak çok fazla bellek yükü kaydedebilirsiniz.
Karmalarla ilgili tüm işlemler için karma belgelere bakın
Listeler
Yeniden listeler bağlantılı listeler gibi davranır.
Listenin başına veya kuyruğuna listeler ekleyebilir, listeden listeden listeyi başlatabilirsiniz.
Değerleri girildikleri sırayla tutmanız gerektiğinde listeleri kullanın. (Redis, gerekirse herhangi bir rastgele liste konumuna ekleme seçeneği sunar, ancak başlangıç konumunuzdan uzağa eklerseniz ekleme performansınız düşer.)
Redis listeleri genellikle üretici / tüketici kuyrukları olarak kullanılır. Bir listeye öğe ekleyin, ardından listeden öğeleri açın. Tüketicileriniz element içermeyen bir listeden çıkmaya çalışırsa ne olur? Redis'ten bir öğenin görünmesini beklemesini ve eklendiğinde hemen size geri vermesini isteyebilirsiniz. Bu, Redis'i gerçek zamanlı mesaj kuyruğu / olay / iş / görev / bildirim sistemine dönüştürür.
Listenin her iki ucundaki öğeleri atomik olarak kaldırarak herhangi bir listenin yığın veya kuyruk olarak değerlendirilmesini sağlayabilirsiniz.
Ayrıca, her ekleme işleminden sonra listenizi belirli bir boyuta getirerek sabit uzunluklu listeleri (kapaklı koleksiyonlar) koruyabilirsiniz.
Listelerdeki tüm olası işlemler için listeler belgelerine bakın
Setler
Redis kümeleri, kümelerdir.
Bir Redis kümesi, her dizenin set başına yalnızca bir kez bulunduğu benzersiz sıralanmamış Redis dizeleri içerir. Aynı öğeyi bir kümeye on kez eklerseniz, öğe yalnızca bir kez görünür. Setler, biriken ve alan israf eden yinelenen öğeler hakkında endişelenmeden bir şeyin en az bir kez varlığını tembellik etmek için mükemmeldir. Zaten var olup olmadığını kontrol etmenize gerek kalmadan aynı dizeyi istediğiniz kadar ekleyebilirsiniz.
Setler üyelik kontrolü, sete üye ekleme ve silme işlemleri için hızlıdır.
Setlerin beklediğiniz gibi verimli set işlemleri vardır. Birden çok kümenin birleşimini, kesişimini ve farkını aynı anda alabilirsiniz. Sonuçlar arayan kişiye geri gönderilebilir veya sonuçlar daha sonra kullanılmak üzere yeni bir kümede saklanabilir.
Setler üyelik kontrolleri (listelerin aksine) için sürekli zaman erişimine sahiptir ve Redis bile uygun rastgele üye kaldırma ve döndürme ("setten rastgele bir öğe pop") veya değiştirmeden dönen rastgele üye ("bana 30 rastgele-ish benzersiz kullanıcı verir) ") veya değiştirerek (" bana 7 kart verin, ancak her seçimden sonra kartı tekrar örnekleyebilecek şekilde geri koyun ").
Setlerdeki tüm olası işlemler için set belgelerine bakın .
Sıralama Kümeleri
Yeniden sıralanan kümeler, kullanıcı tanımlı bir sıralamaya sahip kümelerdir.
Basitlik için, sıralı bir kümeyi benzersiz öğelere sahip bir ikili ağaç olarak düşünebilirsiniz. (Yeniden sıralanan kümeler aslında atlama listeleridir .) Öğelerin sıralama düzeni her öğenin puanı ile tanımlanır.
Sıralı kümeler hala kümelerdir. Öğeler kümede yalnızca bir kez görünebilir. Bir öğe, benzersiz amaçlar için, dize içeriği ile tanımlanır. Puan elma 3 ile "elma" öğesi ekleme, sonra 500 puan sıralama ile "elma" öğesi ekleme Sıralanan kümenizde 500 puan sıralama ile bir öğe "elma" sonuçlanır. Kümeler yalnızca (Veriler, Veriler) çiftlerine değil, Verilere dayalı olarak benzersizdir.
Veri modelinizin, öğenin benzersizlik puanına değil, dize içeriğine dayandığından emin olun. Skorların tekrarlanmasına (hatta sıfıra) izin verilir, ancak son bir kez ayarlanan elemanlar sıralı set başına sadece bir kez bulunabilir. Örneğin, skoru girişin çağı ve kullanıcı kimliğinin değerini yaparak her kullanıcı girişinin geçmişini sıralanmış bir küme olarak depolamaya çalışırsanız, tüm kullanıcılarınız için yalnızca son giriş dönemini depolarsınız. Kümeniz, istediğiniz kullanıcı tabanı * girişleri boyutuna değil, kullanıcı tabanınızın boyutuna göre büyüyecektir.
Öğeler setinize puanlarla eklenir. Herhangi bir öğenin puanını istediğiniz zaman güncelleyebilirsiniz, öğeyi yeni bir puanla tekrar eklemeniz yeterlidir. Skorlar kayan nokta iki katıyla gösterilir, böylece gerekirse yüksek hassasiyetli zaman damgalarının ayrıntı düzeyini belirtebilirsiniz. Birden fazla eleman aynı puana sahip olabilir.
Öğeleri birkaç farklı yolla alabilirsiniz. Her şey sıralandığından, en düşük puanlardan başlayarak öğeleri isteyebilirsiniz. En yüksek puanlardan ("tersine") başlayarak öğeleri isteyebilirsiniz. Öğeleri doğal veya ters sırayla sıralama puanlarına göre isteyebilirsiniz.
Sıralı kümelerdeki tüm olası işlemler için sıralı kümeler belgelerine bakın.