2015-04-13 32 views
6

öğe eklemek için:StackExchange.Redis - Ben aşağıdaki senaryoları gerçekleştirmek için çalışıyorum bir Redis Set

  1. yeni Redis SET tip T 5 öğeler ekle
  2. tip 1 öğe ekle bir mevcut REDIS için T

BELİRTİLEN

(i setinin mevcut olup olmadığını SETADD umursamıyor biliyorum, ama sadece başvuru için benim senaryoları listeleme)Ben SetAddAsync(RedisKey, RedisValue value) ve SetAddAsync(RedisKey, RedisValue[] values) olduğunu görebilirsiniz, ama ben o zaman, ben sadece bir byte[] için T seri, (ve kullanımı aşırı hangisi?)

i StringSet kullandım zaman onunla çalışmak nasıl emin değilim

Bunu RedisValue param olarak kullanın.

Ancak kümeler için nasıl yapılacağından emin değilsiniz.

serializer
var items = values.Select(serializer.Serialize).ToArray(); 
await cache.SetAddAsync(key, items); 

Size StringSet kullanacağı nasıl temelde aynı olan bir byte[]

cevap

8

için T dönüştüren bir sınıftır:

Bu i ne var. Tek fark, bir dize ayarlandığında, yalnızca bir değer ayarlamak anlamlıdır - ancak kümesine eklerken, bir kerede 1 veya daha fazla öğeyi eklemek isteyebilirsiniz. Bir öğe ekliyorsanız

, sadece kullanın:

db.SetAdd[Async](key, serializedValue); 

tek seferde sete öğelerin daha çok sayıda eklemek istiyorsanız, daha sonra ilk seri öğeleri olsun, örneğin:

burada önemli fark yo bekliyoruz olmasıdır

var items = values.Select(value => (RedisValue)serializer.Serialize(value)).ToArray(); 

:

var items = Array.ConvertAll(values, value => (RedisValue)serializer.Serialize(value)); 

veya mevcut kodunuzu çimdik ur orijinal kodu,ile biten, nerede bir RedisValue[] gerekir. Yukarıdaki (RedisValue) dökümü sizin için düzeltmelidir.

Sonra çağırır:

db.SetAdd[Async](key, serializedValues); 

Bu variadic form of SADD karşılık gelir.

+0

ahh, eksik olduğum her şey bir oyuncu. (Facepalm). Teşekkürler! – RPM1984

İlgili konular