Ultra fast local cache implementation for .NET

Native In-Memory Performance for .NET Clients

As you may know, since version 6.6 GigaSpaces XAP.NET has become a separate offering, with a native .NET look & feel, considerably better performance and improved ease of use. We are continuing to improve XAP.NET, and one feature that users have consistently been asking for is native .NET local cache support.   The local cache is actually a client side construct which caches the information read from the space and continuously updates it when it changes in the space. This enables client applications to achieve in memory performance for read operations and decrease the load off the central space.

Some Technical Details

This feature existed for a while now in both the Java and .NET versions, but now we've implemented it natively in .NET. The main concept of this cache is that it will wrap a space proxy and drastically boost the speed of id based read operations (Over than a million operations per second). The local cache API is identical to the remote ISpaceProxy API, with a few cache related add-ons. When your code executes an ID-based operation on the space, the cache will detect it, and it will first try to retrieve the requested object from the native local cache. It will go to the central space in case of a cache miss. A read operation is considered an id-based operation when the supplied template only contains actual value in its SpaceID property, and all the other properties have null values.

One of the most interesting parts of the local cache implementation is that due to the fact that it needs to be highly concurrent (incase many client threads access the local cache concurrently), we have implemented highly concurrent native .NET data structures to support it, such as general purpose concurrent dictionaries and more cache specific such as concurrent eviction strategies.

So stay tuned, more details to come when this baby is out :)

Eitan Yanovsky