Redis: bir dizideki veya sıralanmış bir kümedeki bir öğenin süresi dolabilir mi?


124

Şu anda yalnızca bir anahtar / değer çiftinin tamamının süresinin dolması mümkün müdür? Liste türü bir yapıya değer eklemek ve eklemeden 1 saat sonra bunların otomatik olarak kaldırılmasını istersem ne olur? Bu şu anda mümkün mü yoksa temizleme işlemini elle yapmak için bir cron işi çalıştırmayı mı gerektiriyor?

Yanıtlar:


76

Şu anda yalnızca bir anahtar / değer çiftinin tamamının süresinin dolması mümkün müdür?

Bildiğim kadarıyla ve ayrıca son kullanma tarihiyle ilgili temel komutlar ve belgeye göre , şu anda sona erme süresini yalnızca belirli bir anahtara ayarlayabilirsiniz, temel veri yapısına göre ayarlamayabilirsiniz. Bununla birlikte , Google gruplarında bu işlevsellik hakkında, alternatif çözümlerin ana hatlarıyla belirtildiği bir tartışma var .


1
Temmuz 2016 itibariyle bunu daha yeni sürümde destekledikleri herhangi bir fikir var mı?
Kamran Shahid

1
@KamranShahid bu konuda bir şey var mı ??
Prakash Kumar

1
Nop Prakash henüz değil.
Kamran Shahid

3
Bu cevap 8 yıl sonra hala geçerli mi?
simo

2
Evet, iç içe geçmiş veri yapılarındaki öğe süre sonu Redis tarafından desteklenmiyor.
Itamar Haber

94

Bu sorunu oldukça iyi çözen ortak bir model var.

Sıralı kümeler kullanın ve puan olarak bir zaman damgası kullanın. Bu durumda öğeleri puan aralığına göre silmek önemsizdir; bu, periyodik olarak veya yalnızca her yazmada, aralık dışı öğeleri her zaman göz ardı ederek, yalnızca bir puan aralığını okuyarak okur.

Daha fazla bilgi için: https://groups.google.com/forum/#!topic/redis-db/rXXMCLNkNSs


7
Güzel çözüm, ancak redis'in bunu doğru bir şekilde desteklemesini diliyorum. Bu yaygın bir gereksinimdir ve karmaşık geçici çözümler gerektirmemelidir.
UpTheCreek

14
Bilmiyorum, silahlarına sadık kaldıkları için gerçekten mutluyum - özelliği istemedikleri veya planlamadıkları şekillerde genişletmek, tasarımdan fedakarlık etmek anlamına geliyor. Üstte ek işlevler geliştirmek mükemmel bir çözüm gibi geliyor ve Redis'in yaptığı şeyi mükemmel bir şekilde yapmasına izin veriyor
Kieren Johnstone

redis olduğu gibi mükemmel - mükemmel performansın
ötesine

1
Harika bir çözüm, bir listeyi tuttuğumuz ve basitçe ilk 5 öğeyi aldığımız basit bir fifo listesi de kullanabildik ve ölçeklenebilirliğe bağlı olarak liste 5 + N'den büyük olduğunda, anahtarı silip baştan başlıyoruz. Basit, kolay ve Redis algoritmalarının tam olarak nasıl olması gerektiği. Bu algoritma, raporlama sistemimize listeyi sorgulamak ve kullanıcıların hangi cihazlarla giriş yaptığını görmek için bolca zaman verir. @KierenJohnstone ile aynı fikirde olan Redis, etrafında mimari oluşturmak için tasarlanmıştır ve tam olarak olduğu gibi mükemmeldir.
Ligemer

1

Bunu halletmek için farklı bir yöntem buldum, hiçbirinize yardımcı olup olmadığını bilmiyorum, ama işte burada:

Karma ve sıralanan küme bir kılavuzla birbirine bağlanır.

  1. 'X' saniye içinde süresi dolacak bir hash'im var
  2. Aralıklı sorgular için kullanılan sıralı bir kümem var
  3. Her ikisinin de verileri bir işleme eklenir, dolayısıyla biri başarısız olursa ikisi de başarısız olur.
  4. Aralıklı bir sorgu üzerine, sonuçlar yinelenirken hashing uygulanmış değerin var olup olmadığını görmek için 'EXISTS'i kullanın
  5. Mevcut değilse, süresi dolmuştur, bu nedenle sıralanan kümeden öğeyi silin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.