The publicly available Memcache doesn't have this functionality either, and
it's really not as simple as you might think. What if there's a lot of data?
Do you need a cursor? Should you lock all Memcache shards? And so forth.

If you're interested in a project that does something similar, you should
check out Redis. It's a key/value store with data structures that exists all
in memory, where values are asynchronously flushed to disk.

--
Ikai Lan
Developer Programs Engineer, Google App Engine
plus.ikailan.com | twitter.com/ikai



On Mon, Oct 3, 2011 at 2:29 PM, mscwd01 <mscw...@gmail.com> wrote:

> That's a shame, it's a real disadvantage not having that simple
> functionality.
>
> Thanks for your example, although I found it a little difficult to
> understand it completely. Are you suggesting having an entry in the
> cache with a key string "allKeys" which maps to a List of keys
> belonging to all the other entities in the cache? Would this allow me
> to iterate through the keys, saving the entity to the datastore and
> then removing the entry from the cache?
>
> Also what is the "putIfUntouched" statement for?
>
> Thanks again
>
>
>
> On Oct 3, 9:51 pm, Bruno Fuster <brunofus...@gmail.com> wrote:
> > I don't think so.
> >
> > You could create a key with all entities ids that need to be updated.
> >
> > Something like:
> >
> > public void saveEntity() {
> >
> >     cache.put(key, entity);
> >     queue.add(withUrl("/entitiesToUpdate?id="+entity.getId()));
> >
> > }
> >
> > and then
> >
> > public void entitiesToUpdate(Long id) {
> >
> >   IdentifiableValue i = cache.getIdentifiable("allKeys");
> >   List<Long> keys = i.getValue();
> >   keys.add(id);
> >
> >   boolean put = cache.putIfUntouched("allKeys", i, keys);
> >   if (!put) {
> >        //response 409 for conflict due to concurrency so appengine will
> > retry this later
> >   }
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > }
> > On Mon, Oct 3, 2011 at 5:38 PM, mscwd01 <mscw...@gmail.com> wrote:
> > > Hey
> >
> > > How would one return all the values stored within the memcache?
> > > I have tried using entrySet() and values() methods on the cache but
> > > both result in an java.lang.UnsupportedOperationException.
> >
> > > Ideally, I need to return all the entities stored within the cache and
> > > bulk save them to the datastore - is this possible?
> >
> > > Thanks
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "Google App Engine for Java" group.
> > > To post to this group, send email to
> > > google-appengine-java@googlegroups.com.
> > > To unsubscribe from this group, send email to
> > > google-appengine-java+unsubscr...@googlegroups.com.
> > > For more options, visit this group at
> > >http://groups.google.com/group/google-appengine-java?hl=en.
> >
> > --
> > Bruno Fuster
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine for Java" group.
> To post to this group, send email to
> google-appengine-java@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-java@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to