Blah, missed this message before I responded :D But ya, totally agreed here. If your site requires memcache in order to run, you are in serious trouble. My general rule is no queries on a site should take more then 0.2 seconds to run. Even with that, its a long time to wait on a single query.

On Aug 5, 2009, at 10:36 AM, dormando wrote:


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




Reply via email to