invalidation by namespace Re: Listing all keys on a server: why?
Jason Edgecombe
jedgecombe at carolina.rr.com
Sat Jul 29 00:22:20 UTC 2006
Martin Atkins wrote:
> Serhat Sakarya wrote:
>> On 7/28/06, Paul T <pault12345 at yahoo.com> wrote:
>>>
>>>
>>> 3. key_salt is stored in memcached forever.
>>
>>
>> The problem I see with this approach is that when the salt *does* get
>> lost
>> (node reboot, failure, etc), you risk that old data may be revalidated.
>
> This is a very good point. What if the revision counter expires before
> the data?
>
> It does mean that whichever node the revision counter is on becomes a
> single point of failure for that namespace, too. If that node goes
> down you've lost the entire namespace until it comes back up again, at
> which point you're worse off because your counter goes back to zero.
>
> The only solution that springs readily to mind is to treat the
> revision counter like any other cached value and store it in
> persistent storage as well as in memcache. That way you can restore it
> should it be lost. In normal circumstances, this becomes a performance
> hit only when invalidating a revision.
>
>
What if you use md5, sha1 or some other generated salt? If and only if
the salt is changed when the data is changed, then this should work. You
could still cache the salt, but it would always change when the data
changed.
If the salt expires, it could just be regenerated. If the salt expires
before the data, the data will still be used if it's valid and there is
less chance of re-validating old data.
Jason
More information about the memcached
mailing list