【发布时间】:2016-08-17 13:56:17
【问题描述】:
在 Redis/MemCache 等缓存系统中,需要对对象进行序列化和反序列化。在存储对象时,需要序列化,而在访问该对象时,需要反序列化。
C#/.Net MemCache 是否也需要序列化/反序列化对象?例如当我存储以下类的对象时,只是在缓存中设置了对象引用,还是在存储到缓存之前对对象进行了序列化?测试表明缓存只是存储一个引用。但我想检查一下。
class CacheData
{
public int A = 0;
public int B = 0;
}
private static void TestMemoryCache()
{
CacheData origObject = new CacheData();
ObjectCache cache = MemoryCache.Default;
CacheItemPolicy policy = new CacheItemPolicy();
cache.Set("someKey", origObject, policy);
origObject.A = 2;
origObject.B = 3;
CacheData cachedObj = cache["someKey"] as CacheData;
if (cachedObj == origObject)
Console.WriteLine("Same");
else
Console.WriteLine("Distinct");
cachedObj.A = 5555;
cachedObj = cache["someKey"] as CacheData;
Console.WriteLine("The A value is: " + cachedObj.A);
}
【问题讨论】:
标签: c# .net serialization