Czy i tak istnieje serilize obiektu linq dla Memcached?
Po prostu zaczynam przechodzić na memcached i obecnie testuję z memcached.
Mam 2 obiekty, stworzyłem obiekt i umieściłem na nim [Serializable] (na przykład, nazwijmy toObject1
), drugi obiekt jest tworzony przy użyciu Linq DBML (Object2
) ..
Próbowałem memcachedList<Object1>
, działa dobrze, jak urok, wszystko tutaj jest cache i ładowane poprawnie.
Ale potem przechodzę do obiektu Linq, teraz próbuję dodać do memcachedList<Object2>
to nie działa, w ogóle nie zostało dodane do memcached. żaden klucz nie został dodany
Przechodzę dalej i zmieniam tryb serializacji na jednokierunkowy, ponownie wykonuję dodawanie, wciąż bez nadziei.
Czy i tak ma to zrobić?
Oto prosty test, który właśnie napisałem, używając MemcachedProvider z codeplex do zademonstrowania:
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);
}
pochodzi z Memcached, nie nazwano STORE:
> 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
W moim profilerze SQL wywołał on 3 kwerendy na 3 czasy testowe => Udowodniono, że obiekt wywołany z powrotem z Memcached ma wartość null, a następnie wysyła zapytanie.