Redis bir bellek deposudur. Bu nedenle, bellek depolamaya uyarlanmış veri yapılarını kullanabilir (hızlı rastgele erişime izin verir).
Sözlükleri uygulamak için (ana sözdizimi için kullanılan, ancak karma ve set nesneleri için ve zset nesneleri için bir atlama listesiyle birlikte kullanılan), Redis, erişim karmaşıklığı O (1 + n/k) olan separate chaining hash tables kullanın. n, öğelerin sayısı ve k sayısıdır.
Redis, pratikte n/k'nin düşük tutulması için, küme sayısının öğe sayısıyla büyüdüğünden emin olur. Bu rehashing aktivitesi artımlı olarak arka planda yapılır. Maddelerin sayısı önemli olduğunda, karmaşıklık O (1) 'e yakındır (itfa edilmiş).
Diğer mağazalar (örneğin Cassandra), disk üzerindeki verileri saklamak için performans nedenleriyle rasgele I/O'sayısını en aza indirecek şekilde tasarlanmıştır. Bir karma tablosu, bunun için iyi bir veri yapısı değildir, çünkü verilerin yerini etkilemez (arabelleğe alma işleminden çok iyi yararlanamaz). Bu nedenle, disk tabanlı depolar genellikle O (log n) karmaşıklığı olan B-tree varyantlarını (çoğu RDBMS) veya log-structured birleştirme (LSM) ağaçları varyantlarını (Cassandra) kullanır.
Evet, Redis birçok işlem için O (1) sunar, ancak bir kısıtlama vardır: tüm veriler belleğe sığmalıdır. Burada sihir yok.
Zaman ayırdığınız için teşekkürler. – JasonG
Bir kova ne demektir? Ayrı bir 'veritabanı' mı? (hangi antipattern gibi görünüyor) veya ayrı bir örnek (süreç)? Veya başka bir şey? – Kunok