Sorry I might have misunderstood.

I'm clear now. Thanks for clearing all my doubts and providing extensive 
info on the stampeding problem. It did help a lot.
In fact, the precedence did help to find the better solution. Thanks once 
again.

Cheers 

On Thursday, 26 April 2018 11:43:21 UTC+5:30, Dormando wrote:
>
> You're way way over thinking this. 
>
> I originally gave two examples, one was literally just the ADD and SET 
> commands, and the other is a wiki page that solves further issues, which 
> you should ignore for now. 
>
> Again, memcached server is *atomic* for key manipulations. the server 
> works exactly as I described, no matter what you do or how you access it. 
>
> On Wed, 25 Apr 2018, sachin shetty wrote: 
>
> > Thank you. 
> > Does this memcached 'add' lock or 'set' lock defined in 
> memecached client or 
> > memcached server? The reason I asked because, thread 1 from one process 
> and thread 2 
> > from another process tries to add and set simultaneously, will this lock 
> happens at the 
> > memcached server or at the individual clients? 
> > 
> > On Thursday, 26 April 2018 09:26:30 UTC+5:30, Dormando wrote: 
> >       Memcached is internally atomic on key operations. If you add and 
> set at 
> >       the same time, the set will effectively always win since they are 
> >       serialized. 
> > 
> >       1) add goes first. set overwrites it. 
> >       2) set goes first. add will fail. 
> > 
> >       On Wed, 25 Apr 2018, sachin shetty wrote: 
> > 
> >       > Cool. 
> >       > So let me assume the below scenario and correct me if I'm wrong 
> here. 
> >       > 
> >       > Say thread 1 always does add and thread 2 always does set. Will 
> there be 
> >       any race conditions when both these threads do add and set 
> simultaneously? 
> >       What 
> >       > I mean is say thread1 does add and holds 'add' lock and if at 
> the same 
> >       time thread 2 comes for the set operation, how 'set' lock and 
> 'add' lock is 
> >       > handled here? 
> >       > 
> >       > 
> >       > On Thursday, 26 April 2018 06:58:27 UTC+5:30, Dormando wrote: 
> >       >       Hey, 
> >       > 
> >       >       ADD sets an item *only if it doesn't currently exist*. 
> >       > 
> >       >       If you want thread 2 to be authoritative after updating 
> the DB, you 
> >       need 
> >       >       to use a SET. If you don't care and only ever want the 
> first thread 
> >       to 
> >       >       win, you can always use ADD. 
> >       > 
> >       >       On Wed, 25 Apr 2018, sachin shetty wrote: 
> >       > 
> >       >       > Thank you for the reply. 
> >       >       > Can this add be used always, I mean during an update as 
> well? 
> >       >       > What could be the potential disadvantage of this? 
> >       >       > So if two thread does an update using add, still lock 
> hold well in 
> >       this sceanrio? 
> >       >       > 
> >       >       > Thanks, 
> >       >       > Sachin 
> >       >       > 
> >       >       > 
> >       >       > On Wednesday, 25 April 2018 14:13:40 UTC+5:30, Dormando 
> wrote: 
> >       >       >       Hey, 
> >       >       > 
> >       >       >       Two short answers: 
> >       >       > 
> >       >       >       1) thread 1 uses 'add' instead of 'set' 
> >       >       >       2) thread 2 uses 'set'. 
> >       >       > 
> >       >       >       via add, a thread recaching an object can't 
> overwrite one 
> >       already there. 
> >       >       > 
> >       >       >       
> >       
> https://github.com/memcached/memcached/wiki/ProgrammingTricks#avoiding-stampeding-herd
>  
> >       >       > 
> >       >       >       for related issues. using an advisory lock would 
> change the 
> >       flow: 
> >       >       > 
> >       >       >       a. thread 1 gets a miss. 
> >       >       >       b. thread 1 runs 'add lock:key' 
> >       >       >       c. thread 1 wins, goes to db 
> >       >       >       d. thread 2 updates db. tries to grab key lock 
> >       >       >       e. thread 2 fails to grab key lock, waits and 
> retries 
> >       >       > 
> >       >       >       etc. bit more chatter but with added benefit of 
> reducing 
> >       stampeding herd 
> >       >       >       if that's an issue. 
> >       >       > 
> >       >       >       On Wed, 25 Apr 2018, sachin shetty wrote: 
> >       >       > 
> >       >       >       > There is a scenario where a cache gets updated 
> by two 
> >       threads like the instance 
> >       >       >       > mentioned below 
> >       >       >       > 
> >       >       >       >  a. thread 1 looks at the memcache key and gets 
> a miss 
> >       >       >       >   b. thread 1 falls back to the database 
> >       >       >       >   c. thread 2 changes the database value 
> >       >       >       >   d. thread 2 updates the memcache key with the 
> new value 
> >       >       >       >   e. thread 1 sets the old database value into 
> memcache   
> >       >       >       > 
> >       >       >       > I know this scenario is application specific. 
> But the 
> >       question I have is if possible 
> >       >       >       > there is an option to say the current value's 
> timestamp is 
> >       older than the one already in 
> >       >       >       > cache, then memcached should ignore the new 
> entry. This 
> >       could solve race condition as 
> >       >       >       > mentioned above. Suppose I say take the 
> timestamp as the 
> >       version then memcached server 
> >       >       >       > could make use of this to verify whether new 
> entry coming 
> >       is older than the already 
> >       >       >       > current one present. 
> >       >       >       > 
> >       >       >       > Handling at the client would be 
> performance intensive 
> >       because of every time fetching an 
> >       >       >       > existing value from the cache to check the 
> timestamp. 
> >       >       >       > 
> >       >       >       > Are there any handlers for this to solve. Would 
> be very 
> >       helpful if you could provide any 
> >       >       >       > inputs on this. 
> >       >       >       > 
> >       >       >       > 
> >       >       >       > Thanks, 
> >       >       >       > Sachin 
> >       >       >       > 
> >       >       >       > 
> >       >       >       > -- 
> >       >       >       > 
> >       >       >       > --- 
> >       >       >       > You received this message because you are 
> subscribed to 
> >       the Google Groups "memcached" 
> >       >       >       > group. 
> >       >       >       > To unsubscribe from this group and stop 
> receiving emails 
> >       from it, send an email to 
> >       >       >       > [email protected]. 
> >       >       >       > For more options, visit 
> >       https://groups.google.com/d/optout. 
> >       >       >       > 
> >       >       >       > 
> >       >       > 
> >       >       > -- 
> >       >       > 
> >       >       > --- 
> >       >       > You received this message because you are subscribed to 
> the Google 
> >       Groups "memcached" group. 
> >       >       > To unsubscribe from this group and stop receiving emails 
> from it, 
> >       send an email to [email protected]. 
> >       >       > For more options, visit 
> https://groups.google.com/d/optout. 
> >       >       > 
> >       >       > 
> >       > 
> >       > -- 
> >       > 
> >       > --- 
> >       > You received this message because you are subscribed to the 
> Google Groups 
> >       "memcached" group. 
> >       > To unsubscribe from this group and stop receiving emails from 
> it, send an 
> >       email to [email protected]. 
> >       > For more options, visit https://groups.google.com/d/optout. 
> >       > 
> >       > 
> > 
> > -- 
> > 
> > --- 
> > You received this message because you are subscribed to the Google 
> Groups "memcached" 
> > group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to 
> > [email protected] <javascript:>. 
> > For more options, visit https://groups.google.com/d/optout. 
> > 
> >

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"memcached" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to