Я только начинаю переключаться на memcached и в настоящее время на тестировании с memcached.
У меня есть 2 объекта, я создал объект и поместил на него [Serializable] (например, позвольте вызвать это Object1
), другой объект создан с использованием Linq DBML (Object2
) ..
Я попытался memcached List<Object1>
, он работает просто отлично, как шарм, все здесь кеш и загружен правильно.
Но затем я перехожу к объекту Linq, теперь я пытаюсь добавить в memcached List<Object2>
это не работает, оно вообще не добавляется в memcached. ключ не был добавлен
Я перехожу и изменяю режим сериализации на Однонаправленный, делаю добавление снова, все еще без надежды.
Есть ли способ заставить это работать?
Вот простой тест, который я только что написал, используя MemcachedProvider из codeplex для демонстрации:
public ActionResult Test()
{
var returnObj = DistCache.Get<List<Post>>("testKey");
if (returnObj == null)
{
DataContext _db = new DataContext();
returnObj = _db.Posts.ToList();
DistCache.Add("testKey", returnObj, new TimeSpan(29, 0, 0, 0));
_db.Dispose();
}
return Content(returnObj.First().TITLE);
}
это из Memcached, магазин не вызывался:
> NOT FOUND _x_testKey
>532 END
<528 get _x_testKey
> NOT FOUND _x_testKey
>528 END
<516 get _x_testKey
> NOT FOUND _x_testKey
>516 END
И в моем профилировщике SQL он вызвал 3 запроса в течение 3 тестов => Доказано, что объект, вызванный из Memcached, равен нулю, затем запрос.