2009/3/3 Jonathan <jricket...@gmail.com>:
>
> I am using a restful interface for an ajax application and want to be
> able to store the results of queries in memcache, as much of this data
> is read much more often than it is written, but it is occasionally
> written.
>
> I have been trying to think of strategies for how to do this, whilst
> also maintaining the ability to invalidate the cache when necessary.
>
> so for example:
> the user requests page 1 of their objects (0-9) and I store them with
> a key of "modelName-userName-pageNum"
> the user requests page 2 of their objects (10-19) and I store them
> with a key of "modelName-userName-pageNum"
> the user modifies an object on page 2, (or deletes it, or creates a
> new one) and I want to invalidate all "modelName-userName" cached
> lists.
>
> how do I do this???

If you want to delete *all* 'modelName-userName' items, why not store
a mapping (just one cached value) with 'modelName-userName' as key.

For example:

  from google.appengine.api import memcache
  key = 'model-user'
  # load cached values
  data = memcache.get(key)
  if data is None:
    data = {}
  # query page1
  page1 = some_query()
  data[1] = page1
  memcache.set(key, data)
  # return response
  # query page 2
  data = memcache.get(key)
  if data is None:
    data = {}
 page2 = some_query()
 data[2] = page2
 memcache.set(key, data)

And if something's changed, just do "memcache.delete(key)".

Andi


>
>
> jonathan
> >
>

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

Reply via email to