我想在哈希中设置所有条目。(SetAllEntriesToHash)
它必须在运行之前清除哈希中的所有项目。
它与 GetAllEntriesFromHash 相反。
我想在哈希中设置所有条目。(SetAllEntriesToHash)
它必须在运行之前清除哈希中的所有项目。
它与 GetAllEntriesFromHash 相反。
你有几个选择。
1)您可以让 ServiceStack 使用高级 Redis API 为您处理这些问题。
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 命令。