1
我可能會接近這一切都錯了,但我想使用REDIS位圖來跟蹤我的應用程序內的活動。我有一個像下面的一段代碼:我如何從Redis返回一個C#bitarray與Booksleeve
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位是LSB,不管它結束多長時間。 – 2012-07-24 21:01:53
@MarcGravell感謝您的反饋。我猜這只是在索引有意義時才重要,比如在下面的例子中,索引用來反映user_id。這是有道理的,還是我錯過了什麼? http://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps/ – 2012-07-24 21:06:22
哦,對,我想我明白了。告訴你什麼,把它留給我。今晚我不在PC上,但明天我會檢查一切是否正常。 – 2012-07-24 21:19:11