我们目前使用的缓存方案将大量数据缓存在报表对象中(某些情况下高达50MB)。
我们已从内存缓存迁移到文件缓存,并使用ProtoBuf进行序列化和反序列化。这个方案很好,但现在我们正在尝试使用Redis缓存。
下面是一个示例,展示Redis相比使用文件系统所需的时间更长。(注意:在设置字节数组时,使用ProtoBuf而不是JsonConvert将使设置时间缩短至15秒,获取时间缩短至4秒,以下是示例代码)
// Extremely SLOW – caching using Redis (JsonConvert to serialize/de-serialize)
IDatabase cache = Connection.GetDatabase();
// 23 seconds!
cache.StringSet("myKey", JsonConvert.SerializeObject(bigObject));
// 5 seconds!
BigObject redisResult = JsonConvert.DeserializeObject<BigObject>(cache.StringGet("myKey"));
// FAST - caching using file system (protobuf to serialize/de-serialize)
IDataAccessCache fileCache = new DataAccessFileCache();
// .5 seconds
fileCache.SetCache("myKey",bigObject);
// .5 seconds
BigObject fileResult = fileCache.GetCache<BigObject>("myKey");
感谢您提前提供的任何帮助。
附注:我没有在类似问题中找到答案。 缓存大型对象 - LocalCache性能
或者