2013-12-11 24 views
1

除非我遺漏了某些內容,否則我看不到多個設置/添加超載,允許您設置多個過期的密鑰。多個鍵/值的書籤設置過期

var conn = new RedisConnection("server"); 

Dictionary<string,string> keyvals; 

conn.Strings.Set(0,keyvals,expiration); 

,甚至做多操作

conn.Strings.Set(0,keyvals); 
conn.Expire(keyvals.Keys,expiration); 

回答

1

沒有這樣的Redis的操作存在 - expire不varadic。但是,由於api是流水線的,因此只需多次調用方法。如果你想確保絕對的最佳性能,可以在你做這個暫停渴望插座潮紅:

conn.SuspendFlush(); 
try { 
    foreach(...) 
     conn.Keys.Expire(...); 
} finally { 
    conn.ResumeFlush(); 
} 
+0

感謝;)順便說一句...矛盾我也注意到了Set需要很長的時間才能到期,而Expire需要一個int。 –

+0

讓Multi-Get操作返回一個Dictionary 也是很好的,所以我可以找出哪些鍵不存在。 –

+0

@ChadGrant有一個多重獲取的'GetString',它接受鍵的'string []'並返回值的'string []' - 它們通過索引匹配 –

0

這裏是我的方法:

var expireTime = ... 
var batchOp = redisCache.CreateBatch(); 
foreach (...) { 
    batchOp.StringSetAsync(key, value, expireTime); 
} 
batchOp.Execute();