$one = MyObject->get(123);
$two = MyObject->get(123);
refaddr($one) == refaddr($two)
####
-> the in memory cache
-> memcached
-> the DB
##
##
GET doc 123 -> returns version 6
SEARCH for doc 123 -> returns version 5
##
##
$a = get -> version 1
$b = search -> version 1
##
##
$a = get -> version 1
$b = search -> version 1
$a->change()
$a->save() -> version 2
##
##
$a = get -> version 2
$b = search -> version 1
##
##
$a = get -> version 1
$a->change()
$b = search -> version 1
##
##
$a = get -> version 1
$a->change()
$b = search -> version 2
##
##
my ($class,$id,$version,$data) = @_;
if (my $cached = $cache->{$id}) {
return $cached
if $version <= $cached->{version};
return $cache->re_new($data);
unless $cached->has_changed;
}
return $cache->{$id} = $class->new($data);