2013-10-18 30 views

回答

2

這裏有幾個選項。

1)通過使用高級別的Redis API,您可以讓ServiceStack爲您負責。

public class Poco 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
} 

... 

// Client 
var client = new RedisClient("localhost", 6379); 

// This will store the object for you in a Redis hash. 
client.StoreAsHash(new Poco { Id = 1, Name = "Test Name", Description = "Test Description" }); 

// This will fetch it back for you. 
var result = client.GetFromHash<Poco>(1); 

這種方法將使您不必直接處理哈希細節。 ServiceStack將爲您找出所有的東西,並將您發送給它的對象自動填充到哈希中。如果您想更新該對象,只需發送一個具有相同ID的新對象。

另一方面是,您放棄了對數據存儲在Redis中的方式進行控制,以獲得更輕鬆的編程體驗。

2)你自己處理所有的東西。沒有SetAllEntriesToHash函數預先構建。

// Client 
var client = new RedisClient("localhost", 6379); 

// Clear all existing keys 
var keysToClear = new Dictionary<string,string>(); 
client.GetHashKeys("xxxxx").ForEach(k => keysToClear.Add(k, "")); 
client.SetRangeInHash("xxxxx", keysToClear); 

// Save new key/values. 
client.SetRangeInHash("xxxxx", new List<KeyValuePair<string, string>> 
{ 
    new KeyValuePair<string, string>("1", "value 1"), 
    new KeyValuePair<string, string>("2", "value 2"), 
    new KeyValuePair<string, string>("3", "value 3"), 
}); 

或者,只是刪除並重新創建散列可能更容易。

我還想提請您注意RedisNativeClient。它允許您運行直接映射到http://redis.io/commands的Redis命令。

+0

client.Hashhes [hashId] .Clear(); client.Hash [hashId] .AddRange(hash); – ozz

+0

是的,這是一個刪除並重新添加。可能是最簡單的。 –

+0

它是最簡單但不是最好的表現:( – ozz