Hi Victor,<br>
<br>
One thing you can consider to mitigate effects is to add a random factor of about +/- 10% to the expiration time. <br>
<br>
Another option is to invalidate those keys every 1/1000 requests. You
could use a rand() function for this or use the increment/decrement
facility in memcached.<br>
<br>
Of course it's still going to depend on the specifics of your
application whether the above approach won't mess up the consistency of
your data set.<br>
<br>
Regards,<br>
<br>
Serhat<br><br><div><span class="gmail_quote">On 10/20/06, <b class="gmail_sendername">Victor Gumayunov</b> &lt;<a href="mailto:gva@reamdaysoft.com">gva@reamdaysoft.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello everybody,<br>please advise how to solve our problem.<br><br>We're using memcached in our web project.<br>The site is actually a frond-end to some database.<br>Since number of users is very high, we cache DB info in memcached.
<br>But when some memcached key expires, many users simultaneously rush to<br>the DB server stressing it to the edge.<br><br>Obvious solution is to notify in some way 1 web client that certain key<br>is about to expire, so the client re-fetches it from DB and updates in
<br>memcached, while other clients still use cached value until it is<br>updated by notified client.<br><br>We tried several client-side approaches to implement this scenario,<br>but no one gives 100% good result.<br><br>
So we changed server's logics for key processing.<br>Our modified memcached recognizes specially formatted key names<br>and does what I described above (formatted key name contains<br>various parameters for such a behavior).
<br><br>This works almost well, but now we (of cause) run into expected<br>problem that our memcached server cannot be updated when new<br>memcached version is released.<br><br>Can you advise how to solve our problem (key expiration for many
<br>memcached clients simultaneously, which causes DB stress) without<br>patches and various complicated client-side tricks?<br><br>Thanks in advance.<br><br></blockquote></div><br>