我有一個分佈式系統在一個地方我插入約10000項在redis列表中然後調用我的多個應用程序鉤來處理項目。我需要的是有一些ListLeftPop類型的方法與項目的數量。它應該從redis列表中刪除項目並返回到我的調用應用程序。Redis流行列表項目按項目數量
我使用Stackexchange.Resis.extension
我目前的方法只是GET(不是POP)是
public static List<T> GetListItemRange<T>(string key, int start, int chunksize) where T : class
{
List<T> obj = default(List<T>);
try
{
if (Muxer != null && Muxer.IsConnected && Muxer.GetDatabase() != null)
{
var cacheClient = new StackExchangeRedisCacheClient(Muxer, new NewtonsoftSerializer());
var redisValues = cacheClient.Database.ListRange(key, start, (start + chunksize - 1));
if (redisValues.Length > 0)
{
obj = Array.ConvertAll(redisValues, value => JsonConvert.DeserializeObject<T>(value)).ToList();
}
}
}
catch (Exception ex)
{
Logger.Fatal(ex.Message, ex);
}
return obj;
}
POP和得到我有找到一個片段
var cacheClient = new StackExchangeRedisCacheClient(Muxer, new NewtonsoftSerializer());
var redisValues = cacheClient.ListGetFromRight<T>(key);
但它只會做單個項目
所以,你想一下子從列表中流行的所有項目? –
不是所有的,但由一些可配置的號碼。比方說,100一次 –
已嘗試var cacheClient = new StackExchangeRedisCacheClient(Muxer,new NewtonsoftSerializer()); var redisValues = cacheClient.ListGetFromRight(key);但它只會彈出單個項目 –