Redis sunucusuyla iletişim kurmak için Jedis (java istemcisi) kullanıyorum. Üç farklı düğümde çalışan 3 Redis örneğim var. 3 Redis örneğinden bazı kayıtları almak (okumak) istiyorum. Bunları paralel olarak "alır" (okuma) yapmak ve daha sonra alınan veriler üzerinde işlem yapmak ve son bir çıktı oluşturmak istiyorum.Jedis, asenkron işlemleri destekliyor mu
Bunu java'da yapmanın en iyi yolu nedir? Yollardan biri, her birinde (eşzamanlı olarak) 3 konu ve isssue "get" (okuma) oluşturmaktır. 3 komutun tamamlanmasını ve ardından sonucu birleştirmesini bekleyin.
Jedis, bir geri arama özelliği ile 3 "alır" (bu konuyla ilgili herhangi bir komut) eşzamansız olarak yayınlamak için bir mekanizmaya sahip midir?
3 farklı Redis örneğim var. Yani bu Redis örnekleri ile paralel olarak etkileşimde bulunmak için "ShardedJedisPipeline" (jedis/tests/ShardedJedisPipelineTest.java) kullanılmasını önerir misiniz?
Normal Jedis Pipeline (jedis/tests/PipeliningTest.java), tek bir Redis örneğine birden çok komut gönderir, böylece Redis sunucusunda birbiri ardına çalıştırılır (ve sonunda tüm yanıtlar).
"ShardedJedisPipeline" kullanmam gerektiğini varsayalım. Ancak bunun iki sınırlaması vardır: 1. Lua komutunu yani "eval" i 3 paralelde paralel olarak yürütmek istiyorum. 2. Verileri dağıtmak için (Jedis tarafından kullanılan bazı karma algoritmalar), veriyi veya kendi başına (algoritmasını kullanarak) okuma verilerini örneklerden istemiyorum. Verileri dağıtmak için farklı bir stratejimiz var. Bu yüzden, belirtmek istediğim bir kayıt, hangi redis örneğinin ve buna göre okunması gereken bir yerde saklanmalıdır. keyTags bu mekanizmayı sağladığından, ancak bunu "eval" ile nasıl kullanacağınızdan emin değil gibi görünüyor.
redis.clients.jedis.Pipeline? –