views:

3060

answers:

3

I've been paying some attention to Microsoft's fairly recent promoting of Velocity as a distributed caching solution that would compete with the likes of Memcached.

I've been looking for a 64bit version of Memcached for Windows for some time now with no luck, and since everything about the ASP.Net MVC project I'm working on is 64bit, it doesn't make sense to use anything but 64bit.

Now we're already hedging our bets with ASP.NET MVC in Beta (RTM soon hopefully), but StackOverflow doesn't seem to be doing too badly, so I have limited concerns there. But Velocity is still very much an unknown quantity and will still be Beta (or CTP) for ages - but it does have 64bit!

Does anyone have relevant experience or point of view to offer in this situation? Should we bide our time for Velocity - is it even anywhere near good enough to compete with a giant like Memcached, or should we invest time trying to get a 64bit version of Memcached going?

+1  A: 

Memcached has some open source libraries if I'm not mistaken so if you want to go the 64bit route can you not just recompile?

I evaluated Velocity when it first arrived but came to the conclusion it was a bit undeveloped at that stage. Being able to run memcached on non-windows servers is also a bonus.

marshall
You're right, libevent is something it uses, but unfortunately when it comes to memory management, you can't just compile it to 64bit directly - some tweaks need to be made by those who know how - I'm not one of those unfortunately :-) Otherwise, it becomes very unstable.
RobertTheGrey
+2  A: 

If you don't mind paying for a license, you can use Scale Out State Server, which I talk about in my answer to a similar question here. They have both 32- and 64-bit versions.

EDIT: Despite the name of the product, it handles both Session State and distributed caching.

Daniel Schaffer
Caching isn't the same as ASP.NET session tracking in my book. But thanks for the suggestion.
Dan Esparza
Agreed, but SOSS does both.
Daniel Schaffer
session is basically a cache to cache the sessionID...
alchemical
no, sessions need to be held reliably whereas cached objects can be removed when the cache gets full, so they are two different things.
zcrar70
+13  A: 

We have done recently a fair amount of comparing of Velocity and Memcached. In the nutshell, we found Velocity to be 3x - 5x slower than Memcached, and (even more crucially) it does not have currently support for a multi-get operation. So at the moment, I would recommend going with Memcached. Also, another lesson we have learned was that the slowest operation in distributed caching is serialization and deserialization (at least in ASP.NET). The in-process ASP.NET cache is order of magnitudes faster. So you have to choose caching strategies much more carefully.

Jan Zich
Velocity does provide more features (locking, replication, object tagging to name couple performance-impacting ones) -- oftentimes the decision is not just about raw put/get performance of the cache
Update. New Performance Improvements In New CTP
Elijah Glover
@pcawa27: then you should ask yourself if you want a cache or a remote and distributed memory system. Two different problems.
graffic
Any info on the new Performance improvements?
UpTheCreek
It should be noted that a multi-get operation, BulkGet, was added in the final bits.
Drew Marsh