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