gpt4 book ai didi

c# - 如何使用 Booksleeve 从 Redis 返回 C# 位数组

转载 作者:IT王子 更新时间:2023-10-29 06:16:00 24 4
gpt4 key购买 nike

我可能完全错误地处理了这一切,但我想使用 REDIS 位图来跟踪我的应用程序中的事件。我有一段代码如下:

 using (var conn = new RedisConnection("localhost"))
{
conn.Open();

var b1 = conn.Strings.SetBit(1, "test:2012-07-25", 1, true);
conn.Wait(b1);

var b2 = conn.Strings.SetBit(1, "test:2012-07-25", 3, true);
conn.Wait(b2);


var arr = conn.Strings.Get(1, "test:2012-07-25");
conn.Wait(arr);


BitArray bits = new BitArray(arr.Result);

}

我可以毫无问题地添加条目(b1 和 b2)。但是,当我尝试从服务器获取位图作为位数组时,它无法正常工作(我得到了一个值,但设置的位完全不正确)。我假设我在使用 Strings.Get 函数尝试返回这些位时做错了什么,但我不知道该怎么做。唯一明显的方法是为我感兴趣的每个日期单独调用 getbit,但这似乎会引入大量的服务器往返。任何帮助将不胜感激!

最佳答案

抱歉,正在返回正确的结果,我读错了。确实有两个陷阱:

  • 这些位是从右到左写的。当返回一个字节时基本上与预期的顺序相反(至少是我所期望的)。所以在上面的例子中。我被送回了看起来像这样的字节(与我预期的相反)

[0] 错误[1] 错误[2] 错误[3] 假[4] 真[5] 假[6] 真[7] 错误

  • 您需要按字节顺序阅读。字节 0 将包含前 8 位,1 包含下一组位,无穷无尽。由于第 1 点中提到的位反转,这一点很重要。如果在我原来的示例中,我在 Redis 中将偏移量 10 设置为 true,这将显示在位位置 13 中。这是因为偏移量(位)0-7 存储在第一个字节中,而偏移量 8-15 存储在第二个字节。偏移量 10 是存储在第二个字节中的第 3 个,因为它是反向的,我们从 15,14...13 倒数

我想关键实际上是在处理之前反转字节/位...希望这对将来的人有所帮助...

关于c# - 如何使用 Booksleeve 从 Redis 返回 C# 位数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11635571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com