> Can someone else reply with how other libraries are doing sets?  Would you 
> see a benefit in a production environment?

I use an asynchronous add (put-if-absent) to repopulate the remote cache if it 
was not found in the local cache, not found in the remote cache, and therefore 
had to be created locally.  Generally the remote cache is always warmed, as any 
invalidation should have reloaded that data in the remote cache (since local 
caches must be invalidated and reload against the fresh data in the remote 
cache).  However, if a cache server fails then the data is lost and we'd like 
it to slowly be replenished.  Doing an asynchronous put-if-absent allows for a 
gradual recovery without blocking the user request.

----- Original Message ----
From: Kevin Amerson <[EMAIL PROTECTED]>
To: Ciaran <[EMAIL PROTECTED]>
Cc: [email protected]
Sent: Wednesday, January 16, 2008 11:36:48 AM
Subject: Re: Enyim.Memcached and asynchronous sets


I wonder if the benefit in a production web application would really be that 
great.  For instance, each web request already runs in its own thread, so if 
each request in reality only submits a handful of sets then this won't really 
add any performance to a production web site.


50 web servers
100 users per server

5000 simultaneous sets to memcached, does each one need to do theirs 
asynchronously?

Can someone else reply with how other libraries are doing sets?  Would you see 
a benefit in a production environment?


Kevin

On Jan 16, 2008 6:06 AM, Ciaran <[EMAIL PROTECTED]> wrote:


On Jan 16, 2008 11:50 AM, Kieran Benton <[EMAIL PROTECTED]> wrote:















Hi Ciaran,


I think this is definitely something that would be of benefit, as
you're right, if you've architected your app correctly most SETs can be
asynchronous. I'd argue for a BeginStore / EndStore standard pattern though
like in the rest of the BCL.



As I understand it, this is simply a naming convention and adding a parameter 
that implements IAsyncResult (and then using it correctly? )   Is this correct 
? 

- ciaran 







 


Cheers,


Kieran


 




From:
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 

On
Behalf Of Ciaran

Sent: 16 January 2008 11:41

To: [email protected]

Subject: Re: Enyim.Memcached and asynchronous sets






 


 




On Jan 16, 2008 9:45 AM, Ciaran <[EMAIL PROTECTED]> wrote:


HI, 

Am I better modifying the Enyim.Memcached client to support an Async Set
[clearly a workqueue around the normal set command] (and provide you with
another patch), or just wrap the existing client in my own facade to provide
this functionality, i.e. what would 'a' (Enyim) prefer.    









On the off-chance that someone's interested, the following
code : 

           
IList<IEndPoint> servers = new List<IEndPoint>(); 

           
servers.Add(new Enyim.Caching.Configuration.Code.EndPoint("127.0.0.1", 11211)); 

           
MemCachedClientConfiguration configuration = new
MemCachedClientConfiguration(servers); 

           
MemcachedClient client = new MemcachedClient(configuration); 

            DateTime
before = DateTime.Now; 

            for (int i =
0; i < 10000; i++) 

            { 

               
Guid guid = Guid.NewGuid(); 

               
client.Store(StoreMode.Set, guid.ToString(), guid); 

            } 

            DateTime
after= DateTime.Now; 

           
Console.Out.WriteLine(String.Format("Took {0}ms to do 10000 stores",
((TimeSpan)(after-before)).TotalMilliseconds)); 

            DateTime
beforeAsync = DateTime.Now; 

 

            for (int i =
0; i < 10000; i++) 

            { 

               
Guid guid = Guid.NewGuid(); 

               
client.StoreAsync(StoreMode.Set, guid.ToString(), guid); 

            } 

            after =
DateTime.Now; 

           
Console.Out.WriteLine(String.Format("Took {0}ms to do 10000 stores",
((TimeSpan)(after - beforeAsync)).TotalMilliseconds)); 



Prints the following timings:

Took 1734.3861ms to do 10000 stores 

Took 62.5004ms to do 10000 stores

(Interestingly the *actual* time to do the 10000 stores asynchronously, came
out at about 1200ms, because many stores occurred in parallel fwiw)



Thanks

- Ciaran





-- 

- Ciaran 

















-- 
- Ciaran









      
____________________________________________________________________________________
Never miss a thing.  Make Yahoo your home page. 
http://www.yahoo.com/r/hs

Reply via email to