1

我正在尝试使用 Redis Booksleeve 存储多个成员分数值,但 Booksleeve api 似乎不支持此功能。

conn.SortedSets.Add重载仅支持单对值 - 分数。

我是否错过了什么,或者这是故意的,或者您忘记实施的事情?

目前我正在像这样的事务循环中更新我的排序集:

foreach (ForumMessage message in messages)
{
    trans.SortedSets.Add(db, redisKey, message.id.ToString(), message.id);
}
trans.Execute();

从性能的角度来看,以上是否与使用多个成员得分值进行 ZADD 相同?

4

1 回答 1

1

它不会那么有效:

  • 它会多次发送命令和密钥
  • 很有可能反复清空输出缓冲区,这可能会导致数据包碎片

但是......它仍然会很快。

围绕后者有一些 hacky 方法,包括:

  • 批处理
  • 暂停/恢复刷新(如果你这样做,请非常小心地使用try/ !)finally

但是,您可能想知道StackExchange.Redis有一个多键/值SortedSetAdd方法,可以完全满足您的需求。

于 2014-03-19T17:57:41.367 回答