在string类型中,不仅可以存储key-value中value是string类型,也可以存储对象类型。
TestModel amodel = new TestModel();
amodel.Id = 1;
amodel.Name = "wongcony";
amodel.Type = 1;
amodel.Company = "nxin";
for (int i = 1; i < 1000000; i++)
{
string keynum = i.ToString() + "key";
client.Add(keynum, amodel);
}
但是如果把对象类型存储在string类型中,redis自己会把对象数据转换成json字符串。当再次读取时还需要对json字符串进行反序列化。
对象类型最好存储在Hash中,可以提高存储的性能。但是读取数据时,无论是string还是hash都不消耗性能时间。
for (int j = 1; j < 1000000; j++)
{
string keyhnum = j.ToString() + "hkey";
client.SetEntryInHash(keyhnum,"Id","1");
client.SetEntryInHash(keyhnum, "Name", "wongcony");
client.SetEntryInHash(keyhnum, "Type", "1");
client.SetEntryInHash(keyhnum, "Company", "nxin");
}
TestModel amodel = new TestModel();
amodel.Id = 1;
amodel.Name = "wongcony";
amodel.Type = 1;
amodel.Company = "nxin";
//--------------------------------------------
//model已string类型存于redis
Console.WriteLine("存储于String中");
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss:fms"));
for (int i = 1; i < 1000000; i++)
{
string keynum = i.ToString() + "key";
client.Add(keynum, amodel);
}
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss:fms"));
var am=client.Get<TestModel>("5000key");
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss:fms"));
Console.WriteLine(am.Company);
Console.WriteLine("存储于Hash中");
//--------------------------------------------
//model已hash类型存于redis
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss:fms"));
for (int j = 1; j < 1000000; j++)
{
string keyhnum = j.ToString() + "hkey";
client.SetEntryInHash(keyhnum,"Id","1");
client.SetEntryInHash(keyhnum, "Name", "wongcony");
client.SetEntryInHash(keyhnum, "Type", "1");
client.SetEntryInHash(keyhnum, "Company", "nxin");
}
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss:fms"));
var hm = client.GetHashValues("5000hkey");
Console.WriteLine(DateTime.Now.ToString("HH:mm:ss:fms"));
结果图片