What happens when we release 1.4.1? Your site really should be able to tolerate at least the brief loss of a single memcached instance.
It's definitely good to update the cache asyncronously where possible, and all of this stuff stuff (a lot is detailed in the FAQ too). I'd just really like to push the point that these techniques help reduce common load. They can even help a lot in emergencies when you find a page taking 50 seconds to load for no good reason. However, relying on it will lead to disaster. It allows you to create sites which cannot recover on their own after blips in cache, upgrades, hardware failure, etc. If you have objects that really do take umpteen billions of milliseconds to load, you should really consider rendering data (or just the really slow components of it) into summary tables. I like using memcached to take queries that run in a few tens of milliseconds or less, and make them typically run in 0.1ms. If they take 20+ seconds something is horribly wrong. Even 1 full second is something you should be taking very seriously. -Dormando On Wed, 5 Aug 2009, Edward Goldberg wrote: > > I use the term "Cache Warmer" for task like this, where I keep a key > (or keys) warm all of the time. > > The best way to keep the load on the DB constant is to Warm the Cache > at a well defined rate. > > If you wait for a "request" to update the cache, then you may loose > control over the exact moment of the load. > > The idea is to make a list of the items that need to be warmed, and > then do that list at a safe rate and time. > > Very long TTL values can be un-safe. Old values can lead to code > errors that are not expected days later. > > Edward M. Goldberg > http://myCloudWatcher.com/ > > > On Wed, Aug 5, 2009 at 9:44 AM, dormando<[email protected]> wrote: > > > > Also consider optimizing the page so it doesn't take 20 seconds to render > > - memcached should help you under load, and magnify capacity, but > > shouldn't be used as a crutch for poor design. > > > > -Dormando > > > > On Wed, 5 Aug 2009, Adam Lee wrote: > > > >> Run a cron job that executes the query and updates the cache at an interval > >> shorter than the expiration time for the cached item. > >> > >> On Wed, Aug 5, 2009 at 11:38 AM, Haes <[email protected]> wrote: > >> > >> > > >> > Hi, > >> > > >> > I'm using memcached together with Django to speed up the database > >> > queries. One of my Django views (page) uses a query that takes over 20 > >> > sec. Normally this query hits the memcached cache and the data is > >> > served almost instantly. The problem now is that if the cache expires, > >> > the next person accessing this page will have to wait about 20 seconds > >> > for it to load which is not really acceptable for me. > >> > > >> > Is there a way to update the memcached data before it times out, in a > >> > way that this query always hits the cache? > >> > > >> > Thanks for any hints. > >> > > >> > Cheers. > >> > > >> > >> > >> > >> -- > >> awl > >> > > >
