Feature |
AppFabric Cache |
Coherence |
memcached |
Redis |
Terracotta |
eXtreme Scale |
| Version | RC | 3.4.2 | 1.2.8 | 1.2 | 3.0 | 7.0 |
API |
||||||
| CRUD Operations (Create, Read, Update and Delete) |
||||||
| Cache Object Type |
Serializable CLR Object, Data Contracts, Byte[] |
Multiple serialization formats | API converts objects to string | String, List of Strings, Set of Strings, Sorted Sets |
Any Java Object | Multiple serialization formats |
| Supported Client Languages |
.Net Languages | Java, C++, C#, VB.Net, Delphi, Jscript | Perl, C, C#, PHP, Python, Java, Ruby | PHP, Ruby 1 | Java | Java, .Net languages |
| Named Cache Support |
||||||
| Tag Based query 2 | ||||||
| Concurrency API | Optimistic & Pessimistic Locking | Optimistic & Pessimistic Locking. Transactions Support |
Supported using Java Concurrency Semantics | Optimistic & Pessimistic Locking | ||
| Continuous Query Support |
||||||
| Cache Notifications | ||||||
| Eviction | ||||||
| Persistence | ||||||
IDE Integration |
||||||
| Supported IDE |
Visual Studio | Visual Studio, Eclipse | Eclipse | Eclipse | ||
SupportedTopologies |
||||||
| Partitioned | ||||||
| Primary/Backup Replicated | ||||||
| Near Cache / Local Cache |
||||||
| Dynamic Cluster Membership |
||||||
| Sessions | ||||||
| .Net Session State Provider |
||||||
| Java Sessions | ||||||
Failover |
||||||
| Failover Support (High Availability) |
||||||
Security |
||||||
| Secure Cache Support |
||||||
Monitoring& Administration |
||||||
| Command Line Tooling |
||||||
| Cluster wide management |
||||||
| GUI to monitor cluster and clients |
Third party tooling 11 | |||||
| Integrations with external monitoring tools | ETW, PerfMon | JMX based integration | JMX based integration | Tivoli, Wily, Hyperic HQ | ||
Extensibility |
||||||
| Read Through, Refresh Ahead, Write Behind, and Write Through 12 |
||||||
| Explicit Data Affinity |
||||||
| Cache Embedded code |
||||||
Other |
||||||
| Object Size Limit |
None | None | 1 megabytes | None | None | None |
| Cache Composition | Client can be any supported language. Server node is .Net |
Client can be any supported language. Server node is Java |
Client can be any supported language. Server node is C++ |
Client can be any supported language. Server node is C |
Client and Server are Java processes | Client can be any supported language. Server node is Java |
| Product Editions |
Part of Windows | Standard, Enterprise and Grid (Commercial License) |
Single edition with all features (free) | Single edition with all features (free) | ES (Free), EX and FX (Commercial License) | Single edition with all features (Commercial License) |
| 1. Only PHP and Ruby support both Sharding and Pipelining currently which was reported to be used in the Redis POC. Other supported languages which support one or neither of these features include ActionScript, Java, Perl, Python, Scala and TCL | ||||||
| 2. Tag based queries let you search for objects with a tag. Coherence Filter support can be used for this. eXtreme Scale can use EntityManager to search for objects but can be expensive | ||||||
| 3. Velocity notifications are polling based and not real time. Coherence supports both Synchronous and Asynchronous notifications | ||||||
| 4. Coherence supports eviction by memory usage and number of objects in Cache | ||||||
| 5. eXtreme Scale supports eviction by emeory usage and optionally by TTL, LRU and LFU | ||||||
| 6. Terracotta does not have a partitioned cluster feature. Mirrors can stripe the data across multiple servers | ||||||
| 7. Only in client languages which support sharding (PHP, Ruby, Scala) | ||||||
| 8. A memcached session state provider is available as a codeplex project | ||||||
| 9. Velocity administration is done using Windows PowerShell and includes a rich set of commands that support cluster-wide operations | ||||||
| 10. An AppFabric Cache GUI tool to monitor the cluster and clients is available as a codeplex project | ||||||
| 11. Evident Software’s ClearStone Live is a third-party tool that provides GUI monitoring | ||||||
| 12. Redis can be configured to write every change into an append only file | ||||||
| 13. Named regions in AppFabric Cache can be used for Explicit Data Affinity | ||||||
| 14. Coherence supports InvocableCache in .Net, EntryProcessor, and EntryAggregator. These allow node-based processing | ||||||
Portions used with permission from Grid Dynamics
Scaling .Net Web Applications with Microsoft’s Project Code-named “Velocity”
A Technical White Paper by Grid Dynamics September 1, 2009
Comments